W1037 for ループ脱出後のループ制御変数 '%s' の値は不定です (Delphi)
エラーと警告のメッセージ(Delphi) への移動
この警告は for ループの制御変数の値をループの後に使った場合に表示されます。
for ループの制御変数の最終地をあてにしてもよいのは、goto 文か exit 文でループを出た場合のみです。
この制限の目的は、コンパイラが for ループに効率的なコードを生成できるようにするためです。
program Produce;
(*$WARNINGS ON*)
function Test1: Integer;
var
I: Byte;
begin
Result := 0;
for I := 0 to 255 do
Inc(Result);
WriteLn(I); // undefined
end;
begin
Test1;
end.
この例では、制御変数がループの後に暗黙的に使用されるため、未定義の可能性がある - このため警告となる。