A Delfi, tipi procedurali (puntatori di metodo) consentono di trattare le procedure e le funzioni come valori che possono essere assegnati a variabili o passati ad altre procedure e funzioni.
Ecco come chiamare una funzione (o procedura) come parametro di un'altra funzione (o procedura):
Dichiarare la funzione (o procedura) che verrà utilizzata come parametro. Nell'esempio seguente, questo è "TFunctionParameter".
Definire una funzione che accetterà un'altra funzione come parametro. Nell'esempio seguente questo è "DynamicFunction"
funzione DynamicFunction (f: TFunctionParameter): corda;inizio
risultato: = f (2006);
fine;
...
// Esempio di utilizzo:
var
s: stringa;
inizio
s: = DynamicFunction (One);
ShowMessage (s); // visualizzerà "2006"
s: = DynamicFunction (Two);
ShowMessage (s); // visualizzerà "4012"fine;
Note importanti
Naturalmente, decidi tu la firma del "TFunctionParameter": se si tratta di una procedura o di una funzione, di quanti parametri sono necessari, ecc..
Se "TFunctionParameter" è un metodo (di un oggetto istanza) è necessario aggiungere le parole dell'oggetto al nome del tipo procedurale, come in: TFunctionParameter = function (valore const: intero): stringa di oggetto;
Se si prevede che "zero" sia specificato come parametro "f", è necessario verificarlo utilizzando la funzione Assegnato.
Correzione del "Tipo incompatibile: 'puntatore al metodo e procedura normale'"