![]()  | 
![]() ![]() ![]() ![]()  | 
   
 | 
Передача функции как параметраDelphi , Компоненты и Классы , Процедуры и функцииПередача функции как параметраВ нашем случае лучшим решением будет использование процедурного типа. Допустим, что DllFunction() на входе хочет получить определенную функцию, поясним это на примере кода: 
 Вы можете это сделать и так: 
 Все же я не уверен в вопросах корректности использования таким образом в вызовах DLL. памяти (для меня пока неясна работа с памятью, находящейся в другом сегменте), как в этом примере, так что возможно для корректной работы вам придется объявить foo с директивой far, экспортировать ее в модуле, или что-то еще. Также, в зависимости от того, как написана DllFunction(), вы можете в вызове подразумевать приведение типа: 
 В этом случае вам не нужна будет переменная MyFunc или оператор @. В Delphi/Pascal вы можете передавать функции как параметры. Тем не менее, чтобы этим воспользоваться, необходимо для компилятора установить тип. Попробуйте следующий код (я реально его компилил и тестировал): 
 Вы можете сделать две вещи. Во-первых, если вы хотите использовать для передачи longint, напишите следующий код: 
 Другая вещь, которую вы можете сделать - исключить работу с longint и вызывать функцию dll следующим образом: 
 Имейте в виду, что если вы собираетесь вызывать foo из DLL, то необходимо предусмотреть вопросы совместимости, для получения дополнительной информации почитайте описание функции MakeProcInstance. В статье описывается передача функции как параметра в программе Delphi/Pascal при взаимодействии с DLL-файлом. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш  :: Главная :: Процедуры и функции :: 
  | 
||||||||||
 ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007  | ||||||||||