Ich erkläre es am besten mit Quelltext liest bitte Kommentare.
Die Variable i ist integer, Item.FChildren.Count ist auch integer und es ist manchmal 1 und manchmal 0.
Code: Alles auswählen
for i := 0 to (Item.FChildren.Count - 1) do begin
// dieser block wird 2 mal ausgeführt wenn Item.FChildren.Count=1 ist
// und erzeugt natürlich Index Fehler, weil i ist 1 und
end;
Dann habe ich es variert zu:
Code: Alles auswählen
k:= (Item.FChildren.Count - 1);
for i := 0 to k do begin
// dieser Block wird auch zwei mal ausgeführt bei count=1
// wie bei Variation 1
end;
Dann habe ich es zu While-Schleife geändert und da läuft es richtig:
Code: Alles auswählen
i:= 0;
while i<Item.FChildren.Count do
// Jetzt läuft es richtig, d.h. bei
// Item.FChildren.Count =1 wird es nur einmal ausgeführt
Inc(i);
end;
Ich habe dann in einem Neuen Beispielprogramm ähnliches gemacht, da lief es ohne Probleme, auch in Delphimodus:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var i, k: integer;
begin
k:=(1-1);
for i:=0 to k do
Caption:=i.ToString;
end;