Dein Problem ist nicht die For-Schleife, sondern dass du danach auf die Zählervariable zugreifst und das ist nicht erlaubt wenn man die Schleife nicht aktiv verlassen hat (z.B. mit
break
).
Beispiel:
Delphi-Quellcode:
procedure p();
var
x, y: Integer;
begin
x := 0;
y := 5;
for x := x to y do
WriteLn(x);
WriteLn('Last value: ', x);
end;
Ergibt:
Code:
0
1
2
3
4
5
Last value: 6
x ist nach der Schleife 6 obwohl du gar nicht bis 6 gezählt hast. Davor warnt dich der Compiler und er hat Recht. Wenn du x nach der Schleife nochmal verwenden willst solltest du dir den letzten Wert entweder in einer zusätzlichen Variable merken oder die Schleife aktiv verlassen.
Beispiel:
Delphi-Quellcode:
procedure p();
var
x, y: Integer;
begin
x := 0;
y := 5;
for x := x to y do
begin
WriteLn(x);
if(x = y) then
Break;
end;
WriteLn('Last value: ', x);
end;