Moin zusammen,
ist vermutlich ein alter Hut, bin aber trotzdem gerade drüber gestolpert und wollte mal wissen, was es damit auf sich hat:
Folgende Methode erzeugt berechtigter Weise die Warnung
"[DCC Warnung] UnitTest.pas(36): W1036 Variable 'StringList' ist möglicherweise nicht initialisiert worden":
Delphi-Quellcode:
procedure TFormTest.Button1Click(Sender: TObject);
var
StringList : TStringList;
i : integer;
begin
i := 1;
if i=0 then
StringList := TStringList.Create;
StringList.Add('Rumms');
StringList.Free;
end;
Nun irritiert es mich, dass die Warnung nicht mehr kommt, wenn man
FreeAndNil einsetzt:
Delphi-Quellcode:
procedure TFormTest.Button2Click(Sender: TObject);
var
StringList : TStringList;
i : integer;
begin
i := 1;
if i=0 then
StringList := TStringList.Create;
StringList.Add('Rumms');
FreeAndNil(StringList);
end;
Im Einsatz ist Delphi XE2. Würde ich als Bug einstufen, weiß jemand mehr dazu ?