Home » Tipps & Tricks » Object Pascal » Objekte » TStrings verknüpfen

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);