我收到一个我不明白的编译器警告:
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 的情况下,执行将如何到达有问题的行?