Hallo,
ich stehe öfters mal vor dem Problem, dass ich eine Liste habe, und Einträge daraus löschen möchte:
Delphi-Quellcode:
var
Eintrag: TMeinEintrag;
Liste: TObjectList<TMeinEintrag>;
// ...
for Eintrag in Liste do
begin
if Bedingung(Eintrag) then
begin
Liste.Remove(Eintrag);
end;
end;
Das ganze kann aber zu komischen Effekten führen - zum Beispiel wird bei mir jetzt gerade ein Eintrag übersprungen. Vielleicht kommt der Iterator nicht damit zurecht, wenn der aktuelle Eintrag aus der Liste gelöscht wird.
- Könnt ihr bestätigen, dass obiges Beispiel zu Fehlern führen kann?
- Wie löscht ihr bestimmte Einträge aus einer Liste? Eine "for I := Count - 1 downto 0"-Schleife möchte ich vermeiden.
Grüße
Dominik