TStrings verknüpfen
Wenn man zwei normale Variablen hat und diese miteinander verknüpfen möchte, macht man dies meistens so:
procedure TForm1.Button1Click(Sender: TObject); var Str1: String; Str2: String; begin Str1:='Test-String'; Str2:=Str1; end;
In Str2 steht dann genau das Gleiche drin, wie in Str1. Verändert man jetzt Str1, wird der Wert in Str2 nicht verändert.Wenn man jetzt Beispielsweise zwei StringListen hat und diese auch miteinander verknüpfen möchte würde man vielleicht am Anfang zur folgenden Lösung greifen:
procedure TForm1.Button1Click(Sender: TObject); var StrL1: TStringList; StrL2: TStringList; begin StrL1:=TStringList.Create; StrL2:=TStringList.Create; try StrL1.Add('Erster String'); StrL1.Add('Zweiter String'); StrL1.Add('Dritter String'); StrL2:=StrL1; //Hier ist die entscheidende Zeile finally StrL1.Free; StrL2.Free; end; end;
Es wird aber nur die Speicheradresse übergeben und die Einträge werden nicht in die andere StringList kopiert. Dies kann man schnell nachprüfen, indem man aus der ersten Liste einen Wert löscht. In der zweiten Liste wird der Wert dann auch gelöscht. Es kann auch zu anderen Problemen kommen (in meinem Test verschwand jetzt gerade das Programmfenster).Die Lösung für dieses Problem sieht wie folgt aus:
StrL2.Assign(StrL1);