Een functie of procedure gebruiken als parameter in een andere functie

In Delphi, procedurele typen (methodeaanwijzingen) kunt u procedures en functies behandelen als waarden die aan variabelen kunnen worden toegewezen of aan andere procedures en functies kunnen worden doorgegeven.

U kunt als volgt een functie (of procedure) aanroepen als parameter van een andere functie (of procedure):

  1. Geef de functie (of procedure) aan die als parameter wordt gebruikt. In het onderstaande voorbeeld is dit "TFunctionParameter".
  2. Definieer een functie die een andere functie als parameter accepteert. In het onderstaande voorbeeld is dit "DynamicFunction"
 type

    TFunctionParameter = functie(const waarde: geheel getal): draad;

...
functie Een(const waarde: geheel getal): draad;beginnen

    resultaat: = IntToStr (waarde);

 einde;

functie Twee(const waarde: geheel getal): draad;beginnen

    resultaat: = IntToStr (2 * waarde);

 einde;

functie DynamicFunction (f: TFunctionParameter): draad;beginnen

    resultaat: = f (2006);

 einde;

...
// Voorbeeldgebruik:

 

 var

    s: string;

 beginnen

    s: = DynamicFunction (One);

    ShowMessage (s); // geeft "2006" weer

 

    s: = DynamicFunction (twee);

    ShowMessage (s); // geeft "4012" weereinde; 

Belangrijke aantekeningen

  • Natuurlijk beslist u over de ondertekening van de "TFunctionParameter": of het een procedure of een functie is, hoeveel parameters er nodig zijn, enz..
  • Als "TFunctionParameter" een methode (van een instantieobject) is, moet u de woorden toevoegen van object naar de naam van het procedurele type, zoals in: TFunctionParameter = function (const value: integer): string of object;
  • Als u verwacht dat "nul" wordt opgegeven als de "f" -parameter, moet u dit testen met de Assigned-functie.
  • Vaststelling van het "Incompatibele type: 'methode pointer en reguliere procedure'"