Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: aus einer Liste Einträge in eine andere Liste verschieben

  Alt 11. Sep 2014, 14:52
Delphi-Quellcode:
For i:= list.count-1 downto 0 do
  if SatisfiesMoveCondition(List.Item[i]) then begin
    NewList.Append(List.Item[i]);
    List.RemoveItem(i);
  end
Das mal so -wie immer mit jugendlichem Leichtsinn- als generelles Pattern, wie man z.B. aus einer Liste während des Durchlaufens Elemente entfernen kann. Trick ist hier, das man rückwärts läuft. Würde man vorwärts laufen, würde man beim Löschen das jeweils nächste Element überspringen.

Wie ich sehe, läufst Du vorwärts durch. Du hast zwar bemerkt, das Du ein Element überspringen wirst, aber scheinbar klappt das nicht. Genau hab ich mir das aber jetzt angeschaut....

Noch ein Tipp: Alles, was ausgelagert werden kann, auslagern. Damit meine ich, in eine kleine separate Prozedur packen. Delphi macht das mit den Refactoring-Werkzeugen von ganz alleine.

PS: Was genau das Problem ist, wäre noch lustig, zu wissen.

Geändert von Dejan Vu (11. Sep 2014 um 14:55 Uhr)
  Mit Zitat antworten Zitat