E2082 TYPEOF kann nur auf Objekttypen mit VMT angewendet werden (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Diese Fehlermeldung wird angezeigt, wenn Sie die Standardfunktion TypeOf auf einen Objekttyp anwenden, der über keine virtuelle Methodentabelle verfügt.
Eine einfache Abhilfe besteht darin, eine virtuelle Dummy-Prozedur zu deklarieren, damit der Compiler eine VMT erzeugt.
program Produce; type TMyObject = object procedure MyProc; end; procedure TMyObject.MyProc; begin (*...*) end; var P: Pointer; begin P := TypeOf(TMyObject); (*<-- Hier die Fehlermeldung*) end.
In diesem Beispiel wird die Standardfunktion TypeOf auf den Typ TMyObject angewendet, der keine virtuellen Funktionen und somit keine VMT hat.
program Solve; type TMyObject = object procedure MyProc; procedure Dummy; virtual; end; procedure TMyObject.MyProc; begin (*...*) end; procedure TMyObject.Dummy; begin end; var P: Pointer; begin P := TypeOf(TMyObject); end.
Deklarieren Sie eine virtuelle Dummy-Funktion, oder entfernen Sie den Aufruf von TypeOf.