Раньше библиотеками dll не занимался. Решил сделать:
var
FHelpTest: TFHelpTest;
MSCon: TMSConnection;
procedure ShowHelpTest();export;stdcall;
procedure GetConnect(Con:TMSConnection);export;stdcall;
implementation
{$R *.dfm}
procedure ShowHelpTest();
begin
FHelpTest:=TFHelpTest.Create(Application);
FHelpTest.ShowModal;
FHelpTest.Free;
end;
procedure GetConnect(Con:TMSConnection);
begin
MSCon:=Con;
end;
procedure TFHelpTest.FormShow(Sender: TObject);
begin
MSCon.Connected:=true;
end;
Соответственно, передаю туда коннекшн из приложения:
procedure TMainForm.acTestExecute(Sender: TObject);
var
ShowHelpTest:procedure;
GetConnect:procedure(Con:TMSConnection);
LibHandle:THandle;
begin
@ShowHelptest:=nil;
LibHandle:=LoadLibrary('DLL\HelpTest.dll');
if LibHandle>32 then
begin
@GetConnect:=GetProcAddress(LibHandle,'GetConnect');
if @GetConnect<>nil then
GetConnect(MainDMUnit.mainDM.connMain);
@ShowHelpTest:=GetProcAddress(LibHandle,'ShowHelpTest');
if @ShowHelpTest<>nil then
ShowHelpTest;
end;
FreeLibrary(LibHandle);
end;
При передачи коннекшн есть, но библиотека его не получает :) nil . Почему?