How to pass a runnable procedure (a function) as a parameter and run it in Pascal

2 Answers

0 votes
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
  
*)  



 



answered May 22, 2025 by avibootz
0 votes
program ProcedureAsParameter;

uses SysUtils;

type
  TProcedure = procedure;

procedure Control(F: TProcedure);
begin
  if Assigned(F) then
    F(); // Explicitly call the procedure
end;

// Sample procedure to execute
procedure say;
begin
  WriteLn('abcd');
end;

begin
  Control(@say); // Passing procedure reference
end.


  
(*
run:

abcd
  
*)  



 



answered May 22, 2025 by avibootz
...