![]() |
"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 |
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? |
Re: "Array of String" leeren
Zitat:
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 ;) |
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; |
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 ;) |
Re: "Array of String" leeren
Zitat:
Durch den Einsatz von low und high sollte das eigentlich kein Problem sein! |
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 ...
|
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. |
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.
|
Re: "Array of String" leeren
Zitat:
Delphi-Quellcode:
SetLength(dynArray,0);
|
Re: "Array of String" leeren
Dann sollte aber setlength gehn?
Delphi-Quellcode:
Var MyArray: Array of String;
SetLength(MyArray, 0); |
Re: "Array of String" leeren
Zitat:
Zitat:
|
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. |
Re: "Array of String" leeren
Tut mir leid, das habe ich nicht gesehen. Aber bei mir hat´s mit "SetLength" funktioniert:
Delphi-Quellcode:
Und mit "ZeroMemory":
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;
Delphi-Quellcode:
ging´s auch.
ZeroMemory(@s[0],high(s));
|
Re: "Array of String" leeren
Naja, sorry, aber bei mir geht das absolut nich :( Gibt es da nicht noch eine Lösung? :?
|
Re: "Array of String" leeren
Zitat:
b) Schreibe doch einmal was Du machen möchtest!! Eventuell ist eine StringList ja doch besser für dich. |
Re: "Array of String" leeren
Zitat:
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:
Hoffe das der Code soweit verständlich ist ...
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; |
Re: "Array of String" leeren
Nachvollziehen kann ich das nicht, den mit
Delphi-Quellcode:
wird splited3 überschrieben und nicht's angehängt.
splited3 := split(splited2[d], ':');
|
Re: "Array of String" leeren
Zitat:
|
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 19:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz