Синтаксис указателя Delphi - PullRequest
       0

Синтаксис указателя Delphi

2 голосов
/ 06 сентября 2010

Я должен передать аргумент типа Pointer в функцию из внешней DLL.

  • Как создать указатель на процедуру, которую затем можно передать функции?
  • Можно ли также передать указатель на функцию-член класса во внешнюю функцию или это не сработает?

Ответы [ 2 ]

9 голосов
/ 06 сентября 2010

Просто используйте @MyProcedure для этого.

Имейте в виду, что оно должно иметь правильное соглашение о вызовах (вероятно, stdcall).

Обычно вы не можете использовать функцию-член, потому что она имеет скрытый параметр SELF.

Метод class static действует как обычная процедура / функция.

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

0 голосов
/ 09 сентября 2010

Создайте этот тип, если процедура (или функция) является методом

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

или это

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

если процедура отдельная.

Использование:

//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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...