Will man alle Einträge einer Liste löschen, ist while ideal:
while Liste.Count > 0 do Liste.Delete(0);
Will man nur Einträge löschen, die einer bestimmten Bedingung genügen dann ergäbe eine for-Schleife (im Mindestfall) falsche Ergebnisse.
Beispiel:
Delphi-Quellcode:
for i:=0 to Liste.Count-1 do begin
if Liste[i]=Bedingung then Liste.Delete(i);
end;
Angenommen, die Liste hat 5 Einträge (0..4) und Eintrag 2 erfüllt die Bedingung. Dann würde er gelöscht und Eintrag 3 würde zu 2 und 4 zu 3. Die Laufvariable i wird aber erhöht und prüft als nächstes Liste[3], die ja vorher die 4 war. Die eigentliche ursprüngliche 3 wird gar nicht mehr geprüft, sondern "übersprungen".
Das sind so die kleinen Stolpersteine, die einen dann ins Grübeln bringen
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)