Das Delete kannst Du Dir sparen, wenn Du die Liste anschließend freigibst, da diese dann sowieso geleert wird. Vielleicht könntest Du Dich aber mit einem Konzept dieser Art anfreunden?
Delphi-Quellcode:
procedure FillList(List: TObjectList);
var
Obj: TSomeObject;
begin
Assert(Assigned(List), 'Keine gültige Listeninstanz übergeben');
while SomeCondition do
begin
Obj := TSomeObject.Create;
Obj.Property := SomeValue;
List.Add(Obj);
end;
end;
procedure TFormDings.MachWas;
var
List: TObjectList;
Obj: TSomeObject;
i: integer;
begin
List := TObjectList.Create(true);
try
FillList(List);
for i := 0 to List.Count - 1 do
begin
Obj := List[i] as TSomeObject;
Obj.DoSomething;
end;
finally
List.Free;
end;
end;
Die Methode MachWas erzeugt also eine TObjectList und lässt sie dann von FillList befüllen. Anschließend arbeitet sie mit den enthaltenen Objekten und gibt zum Schluss die Liste samt aller enthaltenen Objekte wieder frei.