![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с динамическими DLL [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]
Vovik © (2002-06-13 12:24:00)Здравствуйте!!!
Из главной программы подключаю DLL:
procedure TForm1.N41Click(Sender: TObject);
var Hbar1: Thandle;
Foo1: procedure;
begin
Hbar1 := LoadLibrary("DLL\fastinfo.dll");
if Hbar1 >= 32 then { успешно }
begin
Foo1 := GetProcAddress(HBar1, "fastinfoShow");
Foo1;
end
else
MessageDlg("Ошибка: не могу найти DLL", mtError, [mbOk], 0);
end;
Подскажите,как передать в DLL некоторые переменные из главной программы.
Заранее спасибо.
Vovik (2002-06-13 17:14:00) [1]А можно ли сделать что-нть похожее:
В DLL:
var pCount:PInteger;
procedure SetPointers(pCnt:PInteger);
begin
pCount:=pCnt
end;
в главной программе:
var Count:Integer;
...
Foo2:=GetProcAddress("SetPointers");
Foo2(@Count);
...
Если можно , то как при этом объявлять процедуру в программе?
var Foo2: procedure - не работает.
Fiend (2002-06-13 12:57:00) [2]Да я ж вроде достаточно подробно описал, что ты не понял?
Последняя строка и есть вызов функции в библии, просто так длинно выглядит, потому что привожу типы. Посмотри внимательно.
Стучись в асю, если не поймёшь
Vovik (2002-06-13 12:52:00) [3]Ты не мог бы скинуть кусок своего кода с вызовом DLL с параметрами, а то я чтото немного не понял как это делать.
Fiend (2002-06-13 12:37:00) [4]я от так делал:
type
TCompileReportScript = function (pCROSSReport: pointer; pReportScript: PChar; pReportStrings: pointer; fDebug: longbool): longbool;
var CompileReportScript: TCompileReportScript;
@CompileReportScript:= GetProcAddress(hCROSSReportCommonLibrary, "CompileReportScript");
затем вызываю:
CompileReportScript(fCROSSReport, PChar(fHTTPFields.Values["fReportScript"]), pointer(DWORD(fReportStrings)+StrLen(fReportStrings)), true);
всё работает ОКИ, тока не забудь к моему куску добавить загрузку библии