Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Löschen in einer "for in" Schleife

  Alt 14. Dez 2013, 14:45
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
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat