Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delphi callbacks?

I would like to know if it's possible to implement something like this:

procedure waitandcall(time,@MyProcedureOrFunction)

which execute the function or procedure I've created ?

I'm not sure if they are called callbacks.

like image 500
ELCouz Avatar asked Dec 28 '12 05:12

ELCouz


2 Answers

It's absolutely possible, and you don't even need @ before your function.

In fact, all the events are based on this.

Start by defining a type for your function/procedure

type
  TMyProc = procedure(Param1: Integer);

Then you can use your procedure type anywhere, as long as your procedure's signature matches your type.

If you're using an object method instead of a plain procedure/function, you need to use of object

type
  TMyMethod = procedure(Param1: Integer) of object;

To call your callback from within, you can use something like this:

procedure DoAndCallBack(MyProc: TMyProc)
begin
  MyProc(1);
end;
like image 172
ESG Avatar answered Sep 21 '22 19:09

ESG


Callbacks are exactly what those are called, and Delphi is entirely capable of both creating and calling them. They are also known as function pointers. See Procedural Types in the documentation.

like image 43
Rob Kennedy Avatar answered Sep 24 '22 19:09

Rob Kennedy