Utilisation d'une fonction ou d'une procédure comme paramètre dans une autre fonction

Dans Delphi, types procéduraux (pointeurs de méthode) vous permettent de traiter les procédures et fonctions comme des valeurs qui peuvent être attribuées à des variables ou transmises à d'autres procédures et fonctions.

Voici comment appeler une fonction (ou procédure) en tant que paramètre d'une autre fonction (ou procédure):

  1. Déclarez la fonction (ou procédure) qui sera utilisée comme paramètre. Dans l'exemple ci-dessous, il s'agit de "TFunctionParameter".
  2. Définissez une fonction qui acceptera une autre fonction comme paramètre. Dans l'exemple ci-dessous, c'est "DynamicFunction"
 type

    TFunctionParameter = une fonction(const valeur: entier): chaîne;


une fonction Un(const valeur: entier): chaîne;commencer

    résultat: = IntToStr (valeur);

 fin;

une fonction Deux(const valeur: entier): chaîne;commencer

    résultat: = IntToStr (valeur 2 *);

 fin;

une fonction DynamicFunction (f: TFunctionParameter): chaîne;commencer

    résultat: = f (2006);

 fin;


// Exemple d'utilisation:

 

 var

    s: chaîne;

 commencer

    s: = DynamicFunction (One);

    ShowMessage (s); // affichera "2006"

 

    s: = DynamicFunction (Two);

    ShowMessage (s); // affichera "4012"fin; 

Notes IMPORTANTES

  • Bien sûr, vous décidez de la signature du "TFunctionParameter": que ce soit une procédure ou une fonction, combien de paramètres faut-il, etc..
  • Si "TFunctionParameter" est une méthode (d'un objet instance), vous devez ajouter les mots d'objet au nom du type procédural, comme dans: TFunctionParameter = fonction (valeur const: entier): chaîne d'objet;
  • Si vous vous attendez à ce que "nil" soit spécifié comme paramètre "f", vous devez le tester à l'aide de la fonction Assignée.
  • Correction du "Type incompatible: 'pointeur de méthode et procédure régulière'"