Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1307976499
Push
2011-06-13 18:48
2011.10.02
ПРоверака логина и пароля


15-1306259758
R_R
2011-05-24 21:55
2011.10.02
Трехмерные шахматы


15-1307634080
sasha198407
2011-06-09 19:41
2011.10.02
Моделирование системы массового обслуживания с одним устройством


15-1307421536
Дмитрий С
2011-06-07 08:38
2011.10.02
Как TWinConontrol-у добавить свойств?


2-1307726626
Exterr
2011-06-10 21:23
2011.10.02
Создание кнопок и меню в рантайм





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский