Fast, sie haben nicht den gleichen Namen. Lediglich die Objekt-Referenz sl heisst sl. Diese kann aber auf eine beliebige StringListe zeigen.
Ich weiss jetzt natürlich nicht, wie hoch dein Wissen über Zeiger (Pointer) ist. aber letztendlich definiert die Deklaration :
var SL : TStringList;
nicht ein Objekt vom Typen TStringList, sondern einen Pointer auf ein Objekt vom Typen TStringList. Deshalb musst du das Objekt ja auch noch über den Aufruf von
TStringList.Create erzeugen. Mit der Zuweisung an unsere Variable SL speicherst du eigentlich nur die Adresse im Speicher, wo das neue Objekt liegt.
in unserem Bsp :
Delphi-Quellcode:
for i:=0 to 99 do
begin
sl := tStringlist.create;
List.add(sl);
end;
for i:=0 to 99 do
begin
tStringlist(List.Items[i]).add('Hallo, ich bin StringList Nummer : '+IntToStr(i));
end;
Kannst du nun immer noch alle Stringlisten nutzen, da du die Referenz (Pointer) ja in der Liste gespeichert hast.