- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

passing functions/procedure to other functions/procedures

Question:

Can I pass a function or procedure to another function or procedure?

Answer:

Yes. You must declare a procedure or function type to use as the
parameter type, then you can pass the address of the procedure that
you wish to pass. You must be careful to pass functions or procedures
that are compatible with the function or procedure expected, as little
error checking will be provided by the compiler.

Example:

type
  AFunctionType = function(IntIn : integer) : integer;

function AddProc(IntIn : integer) : integer;
begin
  Result := IntIn + 1;
end;

function SubProc(IntIn : integer) : integer;
begin
  Result := IntIn - 2;
end;

procedure PassAFunction(var IntIn : integer;
                       fn : AFunctionType);
begin
  IntIn := fn(IntIn);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;

begin
  i := 10;

  PassAFunction(i, @AddProc);
  ShowMessage(IntToStr(i));

  PassAFunction(i, @SubProc);
  ShowMessage(IntToStr(i));
end;



* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile