Форум: "Начинающим";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];
ВнизПередача имени процедуры в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c