Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: Alle Elemente in Frame löschen
10. Sep 2012, 11:06
for i := XXX to YYY do
Die Werte für XXX und YYY werden vor dem Ausführen der Schleife ausgewertet und zwischengespeichert, damit
Beim Löschen entfernst du etwas aus der Liste, womit sich alles ab dieser Stelle um 1 nach vorne verschiebt.
Also das Ende YYY würde bei jedem Löschen um 1 kleiner, aber da es zuschengespeichert ist, lies du irgendwann hinter dem Ende, außerdem überspringst du Einträge, denn da der Index (i) beim Löschen weiterwandert, aber da sich alles vorgeschoben hat, wird der Eintrag nach dem Löschen übersprungen.
Man kann mit einer While-Schleife arbeiten, wo die Abbruchbedingung bei jedem Durchgang ausgewertet und nicht zwischengespeichert wird. (das mit dem Überspringen mußt du da aber ebenfalls beachten)
Oder man geht eben rückwärts durch die Schleifen, da sich ja nur hinten was ändert und nicht vor der jeweils aktuellen Position.
$2B or not $2B
|