Moin!
Warum das andere mit der While Schleife auch Murks ist? Ganz einfach:
For und While Schleifen holen sich
vor dem Eintritt in die Schleife die Werte für die Bedingung
nur einmalig und aktualisieren sie nicht mehr beim Durchlauf. Daher kommt es zu dem Fehler. Wenn man Glück hat, tritt dies bei einer While Schleife nicht auf, weil die Optimierung des Compilers dort was anderes draus macht - dem kann man sich aber nie sicher sein.
Man kann übrigens zu den hier geposteten While Schleifen auch alternativ eine For Schleife nehmen, nur man muss sie rückwärts durchlaufen:
Delphi-Quellcode:
For i := ListBox1.Items.Count-1 DownTo 0 Do
If ( ... ) Then
ListBox1.Items.Delete(i);
MfG
Muetze1