理解できないコンパイラ警告が表示されます:
procedure Test;
var
Var1: Integer;
begin
while True do
begin
try
if System.Random > 0.5 then
begin
ShowMessage('Skipping');
continue; // If I remove this line, the warning goes away
end;
Var1:=6;
except on
E:Exception do
begin
ShowMessage('Error');
raise;
end;
end;
ShowMessage(IntToStr(Var1)); // Compiler warning on this line
end;
end;
これを Delphi 2010 でコンパイルすると、次のようになります。
[DCC 警告] OnlineClaimManagerMainU.pas(554): W1036 変数 'Var1' が初期化されていない可能性があります
「続行」の呼び出しを削除すると、警告が消えます。
また、try/except 句を削除すると (そして continue を残すと)、警告は消えます。
Var1 を初期化せずに、どのようにして問題の行に到達するのでしょうか?