program PassFunctionAsParameter;
type
// Define a procedural type for a function that takes an integer and returns an integer
TIntegerFunction = function(x: Integer): Integer;
procedure RunProcedureWithFunction(Func: TIntegerFunction; Value: Integer);
begin
// Call the passed function with the provided value
WriteLn('Result: ', Func(Value));
end;
// Example function to be passed
function Square(x: Integer): Integer;
begin
Square := x * x;
end;
// Another example function
function Double(x: Integer): Integer;
begin
Double := x * 2;
end;
begin
// Pass the Square function to the procedure
RunProcedureWithFunction(@Square, 4);
// Pass the Double function to the procedure
RunProcedureWithFunction(@Double, 7);
end.
(*
run:
Result: 16
Result: 14
*)