Science, Tech, Math › Computer Science Using a Function or a Procedure as a Parameter in Another Function Share Flipboard Email Print Blend Images/Hill Street Studios / Getty Images Computer Science Delphi Programming Delphi Tutorials Advanced PHP Programming Perl Python Java Programming Javascript Programming C & C++ Programming Ruby Programming Visual Basic View More By Zarko Gajic Zarko Gajic Twitter Computer Science Expert MSCS, Computer Science, University of Osijek Zarko Gajic is experienced in SQL and has working knowledge of DB systems such as MS SQL Server, Firebird, Interbase, and Oracle. He is also proficient in XML, DHTML, and JavaScript. Learn about our Editorial Process Updated on February 27, 2019 In Delphi, procedural types (method pointers) allow you to treat procedures and functions as values that can be assigned to variables or passed to other procedures and functions. Here's how to call a function (or procedure) as a parameter of another function (or procedure) : Declare the function (or procedure) that will be used as a parameter. In the example below, this is "TFunctionParameter".Define a function that will accept another function as a parameter. In the example below this is "DynamicFunction" type TFunctionParameter = function(const value : integer) : string;...function One(const value : integer) : string;begin result := IntToStr(value) ; end;function Two(const value : integer) : string;begin result := IntToStr(2 * value) ; end;function DynamicFunction(f : TFunctionParameter) : string;begin result := f(2006) ; end;...//Example usage: var s : string; begin s := DynamicFunction(One) ; ShowMessage(s) ; //will display "2006" s := DynamicFunction(Two) ; ShowMessage(s) ; // will display "4012"end; Important Notes Of course, you decide on the signature of the "TFunctionParameter": whether it is a procedure or a function, how many parameters does it take, etc. If "TFunctionParameter" is a method (of an instance object) you need to add the words of object to the procedural type name, as in:TFunctionParameter = function(const value : integer) : string of object; If you expect "nil" to be specified as the "f" parameter, you should test for this using the Assigned function. Fixing the "Incompatible type: 'method pointer and regular procedure'" Cite this Article Format mla apa chicago Your Citation Gajic, Zarko. "Using a Function or a Procedure as a Parameter in Another Function." ThoughtCo, Aug. 27, 2020, thoughtco.com/function-or-procedure-as-parameter-1057606. Gajic, Zarko. (2020, August 27). Using a Function or a Procedure as a Parameter in Another Function. Retrieved from https://www.thoughtco.com/function-or-procedure-as-parameter-1057606 Gajic, Zarko. "Using a Function or a Procedure as a Parameter in Another Function." ThoughtCo. https://www.thoughtco.com/function-or-procedure-as-parameter-1057606 (accessed June 4, 2023). copy citation