Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подключение DLL по ходу выполнения програмы. [D7, Win95/98]


sashok ©   (2004-07-11 13:28:00) 

У меня в dll такая процедура:

Procedure AA(Form:TForm; str:tstringgrid);
Var MyForm:TDllForm;
Begin
MyForm:=TDLLForm.Create(Form.Owner);
MyForm.ShowModal;
str.Cells[1,1]:=MyForm.Edit1.Text;
MyForm.Free;
End;

Если из своей програмы я подключаю жостко dll - работает:

Procedure AA(Form:TForm; str:tstringgrid);
External 'dll.dll';

А если я делаю так:

Type TAA=Procedure(Form:TForm; str:tstringgrid);
...
var dllhandle:HMODULE;
   AA:TAA;
...

dllhandle:=LoadLibrary(PChar('dll.dll'));
AA:=TAA(GetProcAddress(dllhandle,'AA'));
AA(Form1, StringGrid1);
FreeLibrary(dllHandle);

То пишет Access violation in module 'dll.dll'

Как мне правильно подключить по ходу программы dll так, чтобы процедура нормально работала?


Rouse_   (2004-07-11 22:54:00) [1]

var
 TA:Procedure(Form:TForm; str:tstringgrid); stdcall;

...

@TA := GetProcAddress(dllhandle,'AA');


sashok   (2004-07-11 14:53:00) [2]

Это роли не играет


GrayFace   (2004-07-11 14:26:00) [3]

В примере по Hooks это делается так: @AA:=GetProcAddress(dllhandle,'AA'); И еще эта dll может отсутсвовать, тогда dllhandle будет иметь соответствующие значение.


Наверх

Титульная страница Поиск, карта сайта Написать письмо