EDIT:
Um die Eingangsfrage zu beantworten: Ja, das Verhalten ist bekannt.
Das wusste ich nicht. Da ich ja blutiger anfänger bin und mich kaum im netz rumtreibe, laufen solchen speziellen info an mir vorbei.
Was ich eigentlich nur erreichen wollte ist, das nicht andere auf diese sache reinfallen. Und keines falls einen Thread erzeugen der nun 3 Seiten lang ist. Eigentlich war es nur als info gedacht.
Macht doch nichts, jeder hat mal angefangen... Aber in der
DP hättest Du das auch finden können (sf Optimierung, Schleife):
http://www.delphipraxis.net/89407-co...mierung-2.html
http://www.delphipraxis.net/122117-v...definiert.html
Es soll auch im Delphi Language Guide stehen, das habe ich jetzt aber nicht nachgesehen.
Ich habe Dein Beispiel gerade getestet: Es bringt keine Warnung unter Delphi 2010. Das liegt daran, dass es ja genau der dokumentierte Sonderfall ist, den ich zuvor erwähnte (siehe aktuellere Delphi Hilfe).
Es gibt ohne Break auf jeden Fall eine Warnung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
j: Integer;
begin
MyArray[5]:=True;
for i:=low(MyArray) to high(MyArray) do begin
// if MyArray[i] then break;
j := i;
end;
Label1.Caption:='i ist:'+IntToStr(i);
end;
Bringt:
Zitat:
[DCC Warning] Unit1.pas(37): W1037 FOR-Loop variable 'i' may be undefined after loop
Gruß,
Assertor