Das ist ein Funktionszeiger. So wie ein normaler Zeiger auf eine Variable zeigen kann, zeigt ein Funktionszeiger auf eine Funktion. Der Unterschied ist, dass man einer Funktion auch noch Parameter übergeben kann, deshalb muss der Funktionszeigertyp nach folgendem Muster deklariert werden:
Delphi-Quellcode:
type
PFunction = function(a: Integer): Integer;
PProcedure = procedure(a: Integer);
Dann musst du eine Funktion haben, die deren Parameterliste der des Funktionszeigers in Typ und Reihenfolge entspricht. Dann musst du den Funktionszeiger auf die Funktion zeigen lassen, und du kannst fortan mit dem Funktionszeiger die Funktion aufrufen.
Delphi-Quellcode:
type
PAddFunc: function(a, b: Integer): Integer;
function Add(a, b: Integer); Integer;
begin
Result := a + b;
end;
procedure Main();
var
AddFunc: PAddFunc;
i: Integer;
begin
AddFunc := @Add;
i := AddFunc(4, 5);
end;