XE7. Windows, 32 und 64 Bit, Debug und Release.
Folgendes Beispiel:
Delphi-Quellcode:
program Project27;
{$APPTYPE CONSOLE}
{$R *.res}
procedure forProc();
var
myArray: TArray<Single>;
arrayIndex: Integer;
begin
for arrayIndex := Low(myArray) to High(myArray) do
if (arrayIndex = 42) then Break;
WriteLn(arrayIndex);
readln;
end;
begin
forProc();
end.
Die Variable
arrayIndex
kann klar undefiniert sein. Zur Laufzeit ist sie es tatsächlich auch, denn das Array ist leer. In der Konsole steht dann z.B.
435345345
.
Warum warnt der Compiler davor nicht? Kommentiert man das
if (arrayIndex = 42) then Break;
aus, dann gibt es vernünftigerweise einen
Code:
[dcc32 Warnung] Project27.dpr(12): W1037 FOR-Schleifenvariable 'arrayIndex' kann nach Durchlauf undefiniert sein