Verwenden einer Funktion oder einer Prozedur als Parameter in einer anderen Funktion

In Delphi, Verfahrensarten Mit (Methodenzeigern) können Sie Prozeduren und Funktionen als Werte behandeln, die Variablen zugewiesen oder an andere Prozeduren und Funktionen übergeben werden können.

So rufen Sie eine Funktion (oder Prozedur) als Parameter einer anderen Funktion (oder Prozedur) auf:

  1. Deklarieren Sie die Funktion (oder Prozedur), die als Parameter verwendet werden soll. Im folgenden Beispiel ist dies "TFunctionParameter"..
  2. Definieren Sie eine Funktion, die eine andere Funktion als Parameter akzeptiert. Im folgenden Beispiel ist dies "DynamicFunction".
 Art

    TFunctionParameter = Funktion(const value: integer): Zeichenfolge;


Funktion Eins(const value: integer): Zeichenfolge;Start

    Ergebnis: = IntToStr (Wert);

 Ende;

Funktion Zwei(const value: integer): Zeichenfolge;Start

    Ergebnis: = IntToStr (2 * -Wert);

 Ende;

Funktion DynamicFunction (f: TFunctionParameter): Zeichenfolge;Start

    Ergebnis: = f (2006);

 Ende;


// Beispielverwendung:

 

 var

    s: string;

 Start

    s: = DynamicFunction (One);

    ShowMessage (s); // wird "2006" anzeigen

 

    s: = DynamicFunction (Zwei);

    ShowMessage (s); // zeigt "4012" anEnde; 

Wichtige Notizen

  • Natürlich entscheiden Sie über die Signatur des "TFunctionParameter": ob es sich um eine Prozedur oder eine Funktion handelt, wie viele Parameter es braucht, etc.
  • Wenn "TFunctionParameter" eine Methode (eines Instanzobjekts) ist, müssen Sie die Wörter hinzufügen des Objekts zum prozeduralen Typnamen, wie in: TFunctionParameter = function (const value: integer): string of object;
  • Wenn Sie erwarten, dass "nil" als "f" -Parameter angegeben wird, sollten Sie dies mit der Funktion "Assigned" testen.
  • Behebung des "Inkompatiblen Typs: 'Methodenzeiger und reguläre Prozedur'"