vb调用delphi写的dll非法操作(100分)

  • 主题发起人 主题发起人 lucky9805
  • 开始时间 开始时间
L

lucky9805

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用delphi写了一个dll,其过程定义为
procedure showform;stdcall;
var
tmpform:Tform1;
begin
tmpform:=Tform1.Create(nil);
tmpform.show;
end;
并且已经uses sharemem;

我在vb中调用是这样的,先在模块中声明
option explicit
Declare Sub showform lib "mydll.dll" ()
然后在form中调用
Sub button1_click()
showform
end Sub
运行没有错误,但在关闭主窗体时出现错误,提示我0x00000000内存不能为read,我要怎么做,请高手指教





 
Delphi中調用可以嗎?
 
delphi中调用没有问题!
 
你这DLL中的窗口没有释放
在DLL窗口CLOSE事件中加入
Active:=caFree;

Sharemem 单元可以不要

procedure showform;stdcall;
var
tmpform:Tform1;
begin
tmpform:=Tform1.Create(nil);
tmpform.show;
end;
//最好改成 tmpform.showmodal;
try
tmpform1:=Tform1.Create(nil);
tmpform1.showmodal;
finally
tmpform1.Free;
end;
 
Action:=caFree
// :)
 
我原来已经把Action:=caFree
写在了
Tform1.close中了,你们难道在vb中测试没有问题吗?难道是我的系统有问题?
 
最好把Application.Handle传进来,在DLL中创建FORM时带上
tmpform:=Tform1.Create(nil);
 
procedure showform;stdcall;
var
tmpform:Tform1;
begin
tmpform:=Tform1.Create(Application.Handle);
tmpform.show;
end;
 
接受答案了.
 
后退
顶部