小
小鱼鱼
Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个DLL,作为一个模块,里面只有一个FORM(fsNormal)处理数据库数据。
我在一个主叫程序里,只有菜单(fsNormal),然后在菜单里面调用该DLL模块,但不知为什么调用出错。代码如下,不知道是什么原因!
........................
procedure TfrmMain.nFJClick(Sender: TObject)
///主叫程序
begin
//--调用DLL--
dllshowform('fj','shWl',xtcs);
end;
//.....
type wl = procedure (cs:txtcs)
stdcall;
......
procedure dllshowform(dllnamechar;pnamechar;cs:txtcs)
var
DllHandle: THandle;
ProcAddr: FarProc;
ProvaChild: wl;
begin
DllHandle := LoadLibrary(dllname);
ProcAddr := GetProcAddress(DllHandle, pname);
try
if ProcAddr <> nil then
begin
ProvaChild := ProcAddr;
ProvaChild(cs);
end;
finally
FreeLibrary(DllHandle);
end;
end;
................
//-----fj.dll代码----
procedure shWl(AHandle:THandle;cs:txtcs)
export
stdcall;
var
frmFJ: TfrmFJ;
begin
Application.Handle:=AHandle;
frmFJ:=TfrmFJTD.Create(Application);//---这里就出错
try
frmFJ.Caption:='XXXXXX';
frmFJ.ShowModal;
xtcs:=cs;
finally
frmFJ.Free;
end;
end;
------------------------
公共变量
type
tXTCS=record
s1:string
s2:string
...........
end;
能帮忙看看哪里出了问题?
我在一个主叫程序里,只有菜单(fsNormal),然后在菜单里面调用该DLL模块,但不知为什么调用出错。代码如下,不知道是什么原因!
........................
procedure TfrmMain.nFJClick(Sender: TObject)
///主叫程序
begin
//--调用DLL--
dllshowform('fj','shWl',xtcs);
end;
//.....
type wl = procedure (cs:txtcs)
stdcall;
......
procedure dllshowform(dllnamechar;pnamechar;cs:txtcs)
var
DllHandle: THandle;
ProcAddr: FarProc;
ProvaChild: wl;
begin
DllHandle := LoadLibrary(dllname);
ProcAddr := GetProcAddress(DllHandle, pname);
try
if ProcAddr <> nil then
begin
ProvaChild := ProcAddr;
ProvaChild(cs);
end;
finally
FreeLibrary(DllHandle);
end;
end;
................
//-----fj.dll代码----
procedure shWl(AHandle:THandle;cs:txtcs)
export
stdcall;
var
frmFJ: TfrmFJ;
begin
Application.Handle:=AHandle;
frmFJ:=TfrmFJTD.Create(Application);//---这里就出错
try
frmFJ.Caption:='XXXXXX';
frmFJ.ShowModal;
xtcs:=cs;
finally
frmFJ.Free;
end;
end;
------------------------
公共变量
type
tXTCS=record
s1:string
s2:string
...........
end;
能帮忙看看哪里出了问题?