Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#3

AW: Alle Elemente in Frame löschen

  Alt 10. Sep 2012, 10: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat