Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: nicht initialisierte Variable erzeugt keine Warnung/Hinweis

  Alt 13. Nov 2019, 11:37
ClassName ist aber kein Makro, sondern schon eine richtige Funktion die zur Laufzeit nachschlagen muss welche Klasse das Objekt denn ist. Es ist also nicht ok, keine Warnung zu generieren.

Delphi-Quellcode:
procedure p();
var
   x, y, z: TObject;
begin
   x := TObject.Create();
   y := TInterfacedObject.Create();
   z := nil;

   WriteLn( x.ClassName() );
   WriteLn( y.ClassName() );
   WriteLn( z.ClassName() );
end;

Es gibt echt noch tausend andere Fälle dass der Compiler vor offensichtlichen Fehlern nicht warnt. Embarcadero stolpert ja selbst darüber, TJson.Format(..) beispielsweise hat bis vor ein, zwei Versionen ungültiges Json ausgespuckt weil der Rückgabewert nicht richtig initialisiert wurde und der Compiler davor nicht warnt.
  Mit Zitat antworten Zitat