Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Array of String" leeren (https://www.delphipraxis.net/19932-array-string-leeren.html)

H3v3n 11. Apr 2004 10:47


"Array of String" leeren
 
Hallo,
also, ich mach es mal kurz ;) Ich möchte ein "Array of String" leeren. (komplett) Ich habe es schon mit setlength und zeromemory versucht, aber beides hat merkwürdigerweise nicht geklappt.

Kennt ihr da noch andere Möglichkeiten ?

H3v3n

Sharky 11. Apr 2004 10:50

Re: "Array of String" leeren
 
Hai H3v3n,

erst einmal: "Herzlich Willkommen in der Delphi-PRASIX".
Was verstehst Du denn unter "leeren"? Ein dny. Array auf die lenge 0 setzen oder die Stings in deinem Array zu löschen?
Bei b) musst Du es wohl in einer schleife machen.
BTW: warum verwendest Du keine TStringList?

H3v3n 11. Apr 2004 10:52

Re: "Array of String" leeren
 
Zitat:

Zitat von Sharky
Hai H3v3n,

erst einmal: "Herzlich Willkommen in der Delphi-PRASIX".
Was verstehst Du denn unter "leeren"? Ein dny. Array auf die lenge 0 setzen oder die Stings in deinem Array zu löschen?
Bei b) musst Du es wohl in einer schleife machen.
BTW: warum verwendest Du keine TStringList?

Hallo,
erstmal danke für die Antwort.
Ich verstehe unter leeren, jegliche Werte des Arrays zu löschen. Nach Möglichkeit aber bitte leicht verständlich, ich programmiere noch nicht allzu lange Delphi ;)

Sharky 11. Apr 2004 10:58

Re: "Array of String" leeren
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 myArray : Array[0..14] of String;
 ndx    : Integer;
begin
  //low(myArray) gibt den Start des Array an.
  //high(myArray) gibt das Ende des Array an
  //Es geht also auch wenn das Array [2..6] definiert wäre ;-)
  for ndx := low(myArray) to high(myArray) do // eine einfache Schleife
  begin
    myArray[ndx] := ''; //String leeren.
  end;
end;

H3v3n 11. Apr 2004 11:01

Re: "Array of String" leeren
 
Danke - aber ein kleines Problem gibt es noch. Die Länge des Arrays ist immer unterschiedlich (z.Zt. in einer Variable Namens "d" gespeichert ...) und ich weiß nicht, wo ich da eine dynamische Länge eingeben soll.

Währe nett wenn du mir das noch erklärst ;)

Sharky 11. Apr 2004 11:03

Re: "Array of String" leeren
 
Zitat:

Zitat von H3v3n
... Die Länge des Arrays ist immer unterschiedlich ...

*gg* Hast Du die Kommentare im Quellcode gelesen?
Durch den Einsatz von low und high sollte das eigentlich kein Problem sein!

H3v3n 11. Apr 2004 11:10

Re: "Array of String" leeren
 
Mir fällt grad noch auf, wahrshceinlich ist es immernoch nicht das was ich gesucht habe. Ich brauche es zusätzlich auch noch so, das alle Nummern des Arrays neu vergeben werden können ...

Sharky 11. Apr 2004 11:14

Re: "Array of String" leeren
 
Machen wir es doch einmal anderst herum:

Was möchtest Du mit deinem Array machen? Eventuell ist ja da ein falscher Ansatz.

H3v3n 11. Apr 2004 11:18

Re: "Array of String" leeren
 
Ich habe einen Array, der zwei Werte hat. Und dieser Array soll KOMPLETT (nicht nur der Inhalt wie ich es eben aus Versehen geschrieben habe) geleert werden.

MathiasSimmack 11. Apr 2004 11:19

Re: "Array of String" leeren
 
Zitat:

Zitat von H3v3n
Ich brauche es zusätzlich auch noch so, das alle Nummern des Arrays neu vergeben werden können ...

Also komplett löschen? Da nehme ich immer
Delphi-Quellcode:
SetLength(dynArray,0);

himitsu 11. Apr 2004 11:20

Re: "Array of String" leeren
 
Dann sollte aber setlength gehn?

Delphi-Quellcode:
Var MyArray: Array of String;

SetLength(MyArray, 0);

H3v3n 11. Apr 2004 11:21

Re: "Array of String" leeren
 
Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von H3v3n
Ich brauche es zusätzlich auch noch so, das alle Nummern des Arrays neu vergeben werden können ...

Also komplett löschen? Da nehme ich immer
Delphi-Quellcode:
SetLength(dynArray,0);

Zitat:

Zitat von H3v3n
Ich möchte ein "Array of String" leeren. (komplett) Ich habe es schon mit setlength und zeromemory versucht, aber beides hat merkwürdigerweise nicht geklappt.


himitsu 11. Apr 2004 11:24

Re: "Array of String" leeren
 
Das hab ich schon gesehn - aber es sollte dennoch gehn.

Vielleicht solltest du mal ein bissl vom Source zeigen, eventuell ist da ja ein anderer Fehler drin.

MathiasSimmack 11. Apr 2004 11:27

Re: "Array of String" leeren
 
Tut mir leid, das habe ich nicht gesehen. Aber bei mir hat´s mit "SetLength" funktioniert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s : array of string;
  i : integer;
begin
  SetLength(s,10);
  for i := 0 to 9 do
    s[i] := Format('Eintrag %d',[i]);


  for i := low(s) to high(s) do
    Memo1.Lines.Add(s[i]);

  // Array leeren
  SetLength(s,0);

  // und mal gucken, dass nichts mehr da ist
  SetLength(s,1);

  // bei mir eine leere Box:
  ShowMessage(s[0]);
end;
Und mit "ZeroMemory":
Delphi-Quellcode:
ZeroMemory(@s[0],high(s));
ging´s auch.

H3v3n 11. Apr 2004 11:41

Re: "Array of String" leeren
 
Naja, sorry, aber bei mir geht das absolut nich :( Gibt es da nicht noch eine Lösung? :?

Sharky 11. Apr 2004 11:46

Re: "Array of String" leeren
 
Zitat:

Zitat von H3v3n
Naja, sorry, aber bei mir geht das absolut nich :( Gibt es da nicht noch eine Lösung? :?

a) Ohne etwas Quellcode kann dir keiner helfen ;-)
b) Schreibe doch einmal was Du machen möchtest!! Eventuell ist eine StringList ja doch besser für dich.

H3v3n 11. Apr 2004 11:51

Re: "Array of String" leeren
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von H3v3n
Naja, sorry, aber bei mir geht das absolut nich :( Gibt es da nicht noch eine Lösung? :?

a) Ohne etwas Quellcode kann dir keiner helfen ;-)
b) Schreibe doch einmal was Du machen möchtest!! Eventuell ist eine StringList ja doch besser für dich.

Also, na gut.

Ich baue einen Chatbot für ICQ. Dieser hat Bedingungen (Fragen gestellt, hat diese UIN den Bot beleidigt usw.) So und jetzt muss ich Bedingungen aus einer "Datenbank" (INI-File) lesen und diese auswerten. Aber da die schöne Funktion Split (irgendwo mal in einem Tipps & Tricks-Verzecihnis gefunden, nachgeschrieben dann) immer nur an den Array of String anhängt, muss ich ihn leeren. Und deshalb brauche ich eine Funktion die ALLES in dem Array zurücksetzt, als währe er noch gar nicht definiert worden. Jetzt mal ein wenig Code:

Code:
bedingok := 0;
splited2 := split(datenini.ReadString(IntToString(i), 'bedingungen', ''), '|');
for d:=0 to length(splited2)-1 do begin
if not (splited2[d] = '') then
begin
// HIER müsste ich jetzt splited3 zurücksetzen ...
splited3 := split(splited2[d], ':');
end;



if splited3[1] = 'NONE' then
begin
splited3[1] := '';
end;

if (ini.ReadString(UIN, splited3[0], '') = splited3[1]) then
begin
bedingok := bedingok + 1;
end;

end;
Hoffe das der Code soweit verständlich ist ...

himitsu 11. Apr 2004 12:05

Re: "Array of String" leeren
 
Nachvollziehen kann ich das nicht, den mit

Delphi-Quellcode:
splited3 := split(splited2[d], ':');
wird splited3 überschrieben und nicht's angehängt.

H3v3n 11. Apr 2004 12:48

Re: "Array of String" leeren
 
Zitat:

Zitat von himitsu
Nachvollziehen kann ich das nicht, den mit

Delphi-Quellcode:
splited3 := split(splited2[d], ':');
wird splited3 überschrieben und nicht's angehängt.

Split ist eine eigenprogrammierte Funktion :roll:

himitsu 11. Apr 2004 13:11

Re: "Array of String" leeren
 
Die Funktion selber ist dabei doch egal, denn hier kommt es mal nur auf die Art der Zuweisung an:

Code:
Variable [color=red][b]:=[/b][/color] Funktion;


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz