Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.02;
Скачать: CL | DM;

Вниз

Передача имени процедуры в Dll и вызов ее там   Найти похожие ветки 

 
Gu   (2011-06-09 22:09) [0]

Есть некая прога и Dll, которую она использует. Код обоих доступен. В dll в разное время возникает некоторое событие, которое инициирует процедуру X. Эта процедура доступна из проги, которая по таймеру ее опрашивает. После опроса выводится статистика из переменных, которые возвращает эта процедура.
Вопрос: допустим в проге есть процедура Y, которая выводит статистику процедуры X из dll. Можно ли и каким образом (желательно пример кода) передать имя процедуры Y в dll, чтобы она срабатывала в процедуре X. Или как отслеживать события процедуры X не по таймеру, а тогда, когда они возникают (в основной проге)?
P.S. Код из dll переносить в основную прогу нельзя.


 
Gu   (2011-06-09 23:07) [1]

делал сначала примерно так http://coderx.ru/showthread.php?t=1345 , но похоже это тупик. может еще идеи есть?


 
_Юрий   (2011-06-09 23:26) [2]

Передавать надо не имя процедуры, а указатель на нее.
Как передавать - точно также, как и внутри одной сборки.
Объявить процедурный тип, объявить параметр этого типа, передать в качестве нее процедуру, вызвать.


 
Gu   (2011-06-09 23:43) [3]

Чета я запутался немного:

В проге:

type
tmyproc=procedure;
...
var
myproc:tmyproc;
...

Procedure XX;
begin
showmessage("test");
end;

при подключении dll:

<получаем адрес и активизируем процедуру YY>
myproc:=xx;
YY(myproc);

--------------------------------
в длл

type
tmyproc1=procedure;
...
var
myproc1:tmyproc1;
...

Procedute YY(tmp:tmyproc1); // работает в начале, при подключении dll
begin
myproc1:=tmp;
end;

....
Procedure ZZ; // работает при событии
begin
...
Myproc1;
...
end;

компилируется норм, но при работе - выдает ошибку переполнение стека
может дадите краткий пример или скажете где нетак?


 
Gu   (2011-06-10 00:18) [4]

ага, все заработало, вопрос снят



Страницы: 1 вся ветка

Текущий архив: 2011.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1307468386
Kerk
2011-06-07 21:39
2011.10.02
Delphi Certification Program – Official Announcement


15-1307997001
Юрий
2011-06-14 00:30
2011.10.02
С днем рождения ! 14 июня 2011 вторник


15-1307548488
Rouse_
2011-06-08 19:54
2011.10.02
Может и боян, но все-же хочется поделиться ссылочкой :)


2-1307716666
Kirat
2011-06-10 18:37
2011.10.02
DBGrid в ячейке заменить 1 на 1.00


2-1307976499
Push
2011-06-13 18:48
2011.10.02
ПРоверака логина и пароля