Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Передача в DLL параметра процедурного типа

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
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). Он может ссылаться на любой тип. Возможно сможет и на процедуру. Тем более в одной книжке я читал, что в дельфях тоже есть указатели на функции. Но не помню в какой книженции.
_________________
Тише едешь, не успеешь
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail  
ICQ Number
Хома



Зарегистрирован: 26.08.2003
Сообщения: 109
Откуда: Москва

СообщениеДобавлено: Чт Окт 28 2004 10:14    Заголовок сообщения: Ответить с цитатой

http://forum.sources.ru/index.php?showtopic=70647
Посмотри тут. Там в дельфийском примере объявлен указатель на функцию. Попробуй сделать нечто подобное. Вдруг поможет.
_________________
Тише едешь, не успеешь
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail  
ICQ Number
major13
Гость





СообщениеДобавлено: Пт Окт 29 2004 00:34    Заголовок сообщения: Ответить с цитатой

Эта фича называется CallBack.

в DLL описывается ф-ция

function DoNothind().....

потом она используется в параметрах вызываемой процедур/ф-ци..

а извне это дело выглядит примерно так:

CallMyFunc(@Func)

Советую почитать Тайксеру "Руководство разработчика"
(Функции обратного вызова) или в сетке посмотреть.
Удачи.
Вернуться к началу
 
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...