Delphi

Hallo,

wie kopiere ich eine tstringlist ?

tstringlist2 := Tstringlist1;

geht nicht. Nach

tstringlist1.delete(2);

ist auch in der Kopie der 2.Wert weg (beim Kopieren wird wohl nur ein Zeiger gesetzt.)
Wenn ich mit einer Schleife arbeite:

for x := 0 to TSringlist1.count -1 do
tstringlist2.add(TStringlist1.string[x]);

klappt es zwar, aber das Kopieren auf diese Art ist ziemlich langsam.

Chris

Hallo,

wie kopiere ich eine tstringlist ?

tstringlist2 := Tstringlist1;

geht nicht. Nach

tstringlist1.delete(2);

Liegt daran, dass es halt eben nur Pointer sind.

Wenn ich mit einer Schleife arbeite:
klappt es zwar, aber das Kopieren auf
diese Art ist ziemlich langsam.

Wollt ich auch vorschlagen, aber ist halt langsam bei grösseren Listen.

Versuch mal Move

Hi Chris,

mit BCB geht es so:
TStringList *l1 = new TStringList;
TStringList *l2 = new TStringList;
l1->Add(„l1“);
l1->Add(„l2“);
l2->Text = l1->Text;
an der Stelle ist in l2 der Inhalt von l1
Du kannst nun l1 löschen
delete l1;
hier mit l2 weiterarbeiten und dann nach Beendigung l2 löschen

delete l2;

Ich denke in Delphi brauchst Du nur statt der Pfeile -> einen Punkt zu setzen.

Mfg
Gerhard

Hallo Chris,

also zunaechst einmal ein bisschen Tadel:

Die Stringlisten sind ein echt tolles Werkzeug in Delphi. Das weiss auch Borland / Inprise. Deshalb haben sie die Stringliste recht gut in der onlinehilfe und in der Dokumentation beschrieben. Die Doku findest du auf der Delphi-CD im Verzeichnis Dokumentation (wer haette das gedacht). Dort ist auch das von dir geschilderte Problem beschrieben. Hier nun die Loesung:

StringList2.Assign(StringList1);

oder (wenn StringList2 leer):

StringList2.AddStrings(StringList1);

oder (Wenn StringListe in Komponente benoetigt):

Memo1.Lines.Assign(StringList1);
ListBox1.AddStrings(StringList1);

etc.

Mit der Methode Assign werden auch alle Objektreferenzen mitkopiert.

ich hoffe, damit ist das Thema erschoepfend behandelt!!

Ciao, Niels

Hallo,

vielen Dank für Eure Hilfe. Das nächste mal werde ich auch sicher die Doku auf der CD gründlicher lesen. Mit Assign und Addstrings ging das prima.

Chris

Hallo,

wie kopiere ich eine tstringlist ?

tstringlist2 := Tstringlist1;

geht nicht. Nach

tstringlist1.delete(2);

ist auch in der Kopie der 2.Wert weg
(beim Kopieren wird wohl nur ein Zeiger
gesetzt.)
Wenn ich mit einer Schleife arbeite:

for x := 0 to TSringlist1.count -1 do

tstringlist2.add(TStringlist1.string[x]);

klappt es zwar, aber das Kopieren auf
diese Art ist ziemlich langsam.

Chris