Construire une procédure pointant sur une méthode en Delphi
Beaucoup de procédures des API Windows, ou même de bibliothèques tierces, acceptent un paramètre de call-back dont le type est un pointeur de procédure. Cependant, on aimerait lui transmettre un pointeur de méthode, ne fût-ce que pour avoir des informations de contexte supplémentaires au sein du call-back.
Comme le tutoriel Combiner des procédures et des méthodesCombiner des procédures et des méthodes vous l'explique, il n'est possible de transmettre un pointeur de méthode à la place d'un pointeur de procédure que si la procédure en question est prévue pour : qu'elle possède un paramètre « inutile » en première place. Or dans le cas que nous examinons maintenant, nous n'avons pas la main sur la définition de la procédure de call-back, puisqu'elle appartient soit à Windows, soit à une bibliothèque tierce dont nous n'avons peut-être même pas le code source.
Toute la problématique réside donc en ceci : obtenir un pointeur sur une procédure qui, lorsqu'on l'appelle avec des arguments donnés, appelle elle-même une méthode dont la signature est identique, mais qui évidemment demande un paramètre implicite Self supplémentaire.
Vous êtes invités à donner vos commentaires sur le blogConstruire une procédure pointant sur une méthode . ♪
Un grand merci à Laurent DardenneProfil de Laurent Dardenne pour ses nombreuses remarques toujours aussi constructives, ainsi qu'à Pierre RodriguezProfil de Pedro pour sa correction orthographique attentive. Merci également à CapJackCapJack pour sa remarque pertinente quant au besoin d'un exemple d'utilisation des MakeProcOfXXXMethod.
Lire l'article.Article lu fois.
L'auteur
L'article
Publié le 18 octobre 2007 - Mis à jour le 28 octobre 2007
Version en ligne