type
AFunctionType = function(IntIn : integer) : integer;
function AddProc(IntIn : integer) : integer;
begin
Result := IntIn + 1;
end;
function SubProc(IntIn : integer) : integer;
begin
Result := IntIn - 2;
end;
procedure PassAFunction(var IntIn : integer;
fn : AFunctionType);
begin
IntIn := fn(IntIn);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i := 10;
PassAFunction(i, @AddProc);
ShowMessage(IntToStr(i));
PassAFunction(i, @SubProc);
ShowMessage(IntToStr(i));
end;