Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Create your online store today with Shopify

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Disclosure: My content contains affiliate links.

43,699 questions

57,016 answers

573 users

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
...