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