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;
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;
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;
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;