Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#11

AW: Variablen nicht NIL 64Bit

  Alt 1. Sep 2018, 12:37
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.
  Mit Zitat antworten Zitat