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.