做了个DLL,用别的软件调用,提示内存问题,请高手指教!(100分)

  • 主题发起人 主题发起人 boysunsight
  • 开始时间 开始时间
B

boysunsight

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道怎么描述问题,把代码贴出来,
library PDocUpdate;

uses
SysUtils,
Classes,
Forms,
do
cUpdate in 'DocUpdate.pas' {FormDocUpdate};

{$R *.res}
functiondo
cupdate(databaseinfo:PChar):boolean;stdcall;
begin

databaseinfor:=databaseinfo;
Application.Initialize;
Application.CreateForm(TFormDocUpdate, FormDocUpdate);
Application.Run;
FormDocUpdate.Release;
Result:=UpdateResult;
end;


exports
do
cupdate;
begin


end.

用第三方工具编写的EXE程序第一次调用这个DLL的时候,没有问题,但是在这个EXE程序不退出的情况下,第二次运行DLL文件,就提示“内存不能read”的问题,我觉的是在EXE运行的时候DLL就一直在内存了,然后在第二次调用DLL时,又运行
Application.Initialize;
Application.CreateForm(TFormDocUpdate, FormDocUpdate);
Application.Run;
所以内存冲突,请高手指教,分不够可以加。
 
library PDocUpdate;

uses
SysUtils,
Classes,
Forms,
do
cUpdate in 'DocUpdate.pas' {FormDocUpdate};

{$R *.res}
functiondo
cupdate(handle : THandle;databaseinfo:PChar):boolean;stdcall;
begin

databaseinfor:=databaseinfo;
Application.Handle := handle
Application.CreateForm(TFormDocUpdate, FormDocUpdate);
FormDocUpdate.ShowModal;
Result:=UpdateResult;
end;


exports
do
cupdate;
begin

end.
 
library PDocUpdate;

uses
shearmem,//加上这个
SysUtils,
Classes,
Forms,
do
cUpdate in 'DocUpdate.pas' {FormDocUpdate};
 
提示未知的软件异常,是否我的代码有问题?
 
functiondo
cupdate(databaseinfo:PChar):boolean;stdcall;
begin

databaseinfor:=databaseinfo;
with TFormDocUpdate.Create(nil)do

try
ShowModal;
finally
Free;
end;

Result:=UpdateResult;
end;
 
to meigreat,:
加了sharemem也不行,我的代码哪里写的不对吧。
 
to iamy:
我用类型VB的CENTURL调用的,handle参数应该给什么值啊?谢谢,分不够,可以加!太急了,刚开始编程,有些问题搞不懂。
 
handle参数应该给什么值啊 VB里的integer
 
或者在 VB APIViewer里找到HWND,引用,然后声明为HWND类型
 
SysUtils就行
 
Handle是调用他的窗体的句柄,没有的话填0也可以
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部