![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Только начал пользоваться dll.
Вопрос: по нажатию кнопки открывается подключается бблиотека и открывается форма из этой библиотеки. Пользователь выполняет тест на форме библиотеки, вычисляеются результаты функциями библиотеки. Проблема в том, как передать вычесленные данные из библиотечной формы в основную? |
|
#2
|
||||
|
||||
|
В теле ф-ии создаешь форму, когда форма вернет ShowModal = mrOk выделяешь память, заносишь туда данные с формы и возвращаешь указатель на память с данными.
Код:
function SomeFunction(arguments:pointer):pointer;stdcall; .... Код:
var SomeFunction:function(arguments:pointer):pointer;stdcall;
...
procedure TFrmMain.Button1Click(sender:tobject);
var hDll:thandle;
begin
hDll := LoadLibraryA(PChar('DllName.dll'));
//обработчик ошибки загрузки
SomeFunction := GetProcAddressA(hDll,PChar('SomeFunction'));
//далее вызываешь саму функцию
end;Последний раз редактировалось M.A.D.M.A.N., 01.02.2010 в 08:12. |
|
#3
|
|||
|
|||
|
M.A.D.M.A.N., если не сложно, поясни подробней принцип действия своего варианта.
непонимаю как это поместить форму в тело функции... Думал сделать чтобы по завершению теста на форме из длл нажимать кнопку ЗАВЕРШИТЬ ТЕСТ и данные передавались в основную прорамму. Под данными понимаю одну строковую переменную и 3-и целочисленных. |
|
#4
|
||||
|
||||
|
Также советовал бы воспользоваться поиском по форуму. Вроде и не один раз эта тема поднималась.
|