2

I have to pass an argument of the type Pointer to a function from an external DLL.

  • How do I create a pointer to a procedure which I can then pass to the function?
  • Can I also pass a pointer to a class member function to the external function, or will that not work?

2 Answers 2

9

Just use @MyProcedure for that.

Beware that it has to have the right calling convention (probably stdcall).

You usually can't use a member function, because it has a hidden SELF parameter.

A class static method acts like a usual procedure/function though.

http://docwiki.embarcadero.com/RADStudio/en/Methods

Sign up to request clarification or add additional context in comments.

Comments

0

Create this type if procedure (or function) is method

type
  TMyProc = Procedure(x:Integer;y:Integer) of Object;

or this

type
  TMyProc = Procedure(x:Integer;y:Integer);

if procedure is stand alone.

Usage:

//Some class method
Procedure TfrmMain.Add(x:Integer;y:Integer);
begin
  ...
end;

//Another class method that uses procedure as parameter
procedure Name(proc : TMyProc);
begin
  ...
end;

//Call with:

Name(Add);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.