I am getting a compiler warning I don't understand:
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;
When I compile this in Delphi 2010 I get:
[DCC Warning] OnlineClaimManagerMainU.pas(554): W1036 Variable 'Var1'
might not have been initialized
If I remove the call to 'continue', the warning goes away.
Also, if I remove the try/except clause (and leave the continue), the warning goes away.
How will execution get to the line in question without Var1 being initialised?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…