Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vladgul
Зарегистрирован: 29.06.2004 Сообщения: 12
|
Добавлено: Пн Окт 25 2004 18:00 Заголовок сообщения: Передача в DLL параметра процедурного типа |
|
|
Нужно, чтобы DLL в своей работе использовала внешнюю функцию. Т.е. в использующей DLL программе есть функция, например DoWork.
Нужно передать в DLL ссылку на эту функцию, чтобы во внутреннем обработчике в DLL происходил ее вызов, типа
If Assigned(Proc) then
Proc(параметры);
А сам код функции соответственно был в вызывающей ее программе.
P.S.
DLL будет заниматься чтением данных из аппаратуры, и чтобы не нужно было постоянно вызывать функции проверки новых сообщений от аппаратуры, хочу сделать так, чтобы по приходу нового сообщения вызывался обработчик основной программы. |
|
Вернуться к началу |
|
 |
satay Гость
|
Добавлено: Ср Окт 27 2004 21:47 Заголовок сообщения: |
|
|
Это все равно что
Unit main
uses myUnit
interface
procedure ss();
implementation
end.
Unit myUnit
ss(param); //your proc
end.
Error: Undeclared ss in myUnit, а при попытке включить unit main будет
циклический линк. Напрямую думаю, что не получится:
1. При каких - то изменениях постоянно перекомпил DLL
2. Можно попробывать исполз. дополнительный модуль (проще будет) |
|
Вернуться к началу |
|
 |
Хома
Зарегистрирован: 26.08.2003 Сообщения: 109 Откуда: Москва
|
Добавлено: Чт Окт 28 2004 08:43 Заголовок сообщения: |
|
|
Попробуй использовать нетипированный указатель (в dll). Он может ссылаться на любой тип. Возможно сможет и на процедуру. Тем более в одной книжке я читал, что в дельфях тоже есть указатели на функции. Но не помню в какой книженции. _________________ Тише едешь, не успеешь |
|
Вернуться к началу |
|
 |
Хома
Зарегистрирован: 26.08.2003 Сообщения: 109 Откуда: Москва
|
Добавлено: Чт Окт 28 2004 10:14 Заголовок сообщения: |
|
|
http://forum.sources.ru/index.php?showtopic=70647
Посмотри тут. Там в дельфийском примере объявлен указатель на функцию. Попробуй сделать нечто подобное. Вдруг поможет. _________________ Тише едешь, не успеешь |
|
Вернуться к началу |
|
 |
major13 Гость
|
Добавлено: Пт Окт 29 2004 00:34 Заголовок сообщения: |
|
|
Эта фича называется CallBack.
в DLL описывается ф-ция
function DoNothind().....
потом она используется в параметрах вызываемой процедур/ф-ци..
а извне это дело выглядит примерно так:
CallMyFunc(@Func)
Советую почитать Тайксеру "Руководство разработчика"
(Функции обратного вызова) или в сетке посмотреть.
Удачи. |
|
Вернуться к началу |
|
 |
|