Einzelnen Beitrag anzeigen

Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#19

Re: Prblem bei erstellen einer txt datei

  Alt 6. Dez 2009, 16:48
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)
  Mit Zitat antworten Zitat