Der Compiler hat doch absolut Recht mit der Warnung
Delphi-Quellcode:
procedure Test;
var
SomeThing:TObject;
begin
if Assigned(SomeThing) then
begin
SomeThing.Free();
SomeThing := nil;
end;
end;
Code:
[dcc32 Hinweis] Project1.dpr(17): H2077 Auf 'SomeThing' zugewiesener Wert wird niemals benutzt
[dcc32 Warnung] Project1.dpr(14): W1036 Variable 'SomeThing' ist möglicherweise nicht initialisiert worden
und jetzt mal so
Delphi-Quellcode:
procedure Test;
var
SomeThing:TObject;
begin
SomeThing := nil;
if Assigned(SomeThing) then
begin
SomeThing.Free();
SomeThing := nil;
end;
end;
Code:
[dcc32 Hinweis] Project1.dpr(18): H2077 Auf 'SomeThing' zugewiesener Wert wird niemals benutzt
Wollen wir diese letzte Warnung auch noch wegbekommen?
Delphi-Quellcode:
procedure Test;
var
SomeThing:TObject;
begin
SomeThing := nil;
if Assigned(SomeThing) then
begin
SomeThing.Free();
SomeThing := nil;
end;
FreeAndNil( SomeThing );
end;
Bitteschön.
Jetzt die Preisfrage: Warum ist das so (und vor allem ist das unter Delphi 10.2.3 so völlig korrekt)?
Wer es weiß, darf sich ein Bonbon nehmen.