Pour les décalages positifs, VMT stocke les pointeurs sur toutes les méthodes virtuelles définies par l'utilisateur.
J'ai besoin d'écrire du code pour accrocher le VMT. La façon dont je fais cela est d'obtenir un pointeur vers une méthode virtuelle dans une classe ancêtre.
Disons: TCustomForm.ShowModal
. Je regarde alors le décalage dans le VMT de TCustomForm
. Avec ce décalage en main je vais à TMyForm
et modifie son VMT pour pointer vers la fonction dont j'ai besoin.Comment obtenir le nombre d'entrées (méthodes virtuelles) dans le VMT?
Je voudrais généraliser l'approche et, pour ce faire, je voudrais connaître le nombre total d'entrées que le VMT détient, donc je ne cherche pas après la fin.
Comment obtenir la taille de la partie (définissable par l'utilisateur) du VMT?
[Où puis-je trouver des informations sur la structure du VMT Delphi?] (Https://stackoverflow.com/q/760513/576719) –
Je me trompe peut-être, mais dans System.Rtti, il y a la classe TVirtualMethodInterceptor. Il y a la création de ProxyClass, cela pourrait vous aider, car il crée une copie VMT, une partie du code pourrait vous aider. Je me souviens de quelque chose comme vmtSize. – nil
@LURD, cette question n'a que des réponses incorrectes à cette question comme Stephan souligne dans son commentaire à cette réponse: https://stackoverflow.com/a/761101/650492 – Johan