Delphi callbacks?

ELCouz picture ELCouz · Dec 28, 2012 · Viewed 14.3k times · Source

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.

Answer

ESG picture ESG · Dec 28, 2012

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;