E2082 TYPEOF ne peut être appliqué qu'à des types d'objet avec VMT (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Ce message d'erreur est émis si vous essayez d'appliquer la fonction standard TypeOf à un type object n'ayant pas de table de méthode virtuelle.
Une alternative simple consiste à déclarer une méthode virtuelle factice pour forcer le compilateur à générer une TMV.
program Produce; type TMyObject = object procedure MyProc; end; procedure TMyObject.MyProc; begin (*...*) end; var P : Pointer; begin P := TypeOf(TMyObject); (*<-- Message d'erreur ici*) end.
L'exemple essaie d'appliquer la fonction TypeOf standard au type TMyObject qui n'a pas de fonction virtuelle, et par conséquent pas de table de fonctions virtuelles (TMV).
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.
La solution consiste à introduire une fonction virtuelle factice ou à éliminer l'appel à TypeOf.