Mal eine grundsätzliche Frage, ob dies per Definition so ist und sich auch nicht ändert.
Eine Schleife durch eine Liste in der die Liste selbst geändert wird.
Delphi-Quellcode:
var
sl : TStringlist;
i : Integer;
begin
sl := TStringlist.Create;
sl.Add('eins');
sl.Add('zwei');
sl.Add('drei');
for i := 0 to sl.Count-1 do
sl.Add(i.ToString);
sl.Free;
Das Ergebnis ist
eins
zwei
drei
0
1
2
und die Schleife wird auch beendet.
Ich habe die Anzahl innerhalb der Schleife geändert, also wird der Wert "Count" beim Start gesichert und benutzt.
Kann man sich darauf verlassen, dass das immer so ist? (Also ein Funktionsaufruf, der die Durchlaufanzahl liefert würde immer nur genau einmal aufgerufen.)