Einzelnen Beitrag anzeigen

Ralle1

Registriert seit: 2. Nov 2011
49 Beiträge
 
Delphi XE3 Professional
 
#1

Warnung W1036 Variable nicht initialisiert bei Verwendung FreeAndNil()

  Alt 21. Nov 2014, 10:45
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 ?
  Mit Zitat antworten Zitat