难道DELPHI写的DLL在WIN2k中有问题??

LK007 2003-07-22 06:19:40
当在DLL中打开了窗体,如果在finalization 段对窗体变量进行释放,那么在调用DLL的主程序退出时就会出错。

源码:http://www.snowflower.com.cn/czc/ai/testdll.exe

此源码在98下又可以正常运行,我想应该是WIN2K的内存管理和DELPHI的机制有冲突吧。 有人知道具体的原因吗?
...全文
36 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LK007 2003-07-23
  • 打赏
  • 举报
回复
我并不热衷于什么东西,只是觉得奇怪,在98下可以运行的程序,到2K下不行!
问题是早就解决了。 就象我源码里注释掉的那两行
yoisyois 2003-07-23
  • 打赏
  • 举报
回复
那么热衷Initialization和Finalization?

try..finally..end不是很好吗?

用try..finally就不要用Initialization和Finalization了,你用了吗,楼主?

***********************

伤心~~~~心寒~~~~
jxc163 2003-07-23
  • 打赏
  • 举报
回复
可以直接用with TForm1.create(Handle) do 的方法来做呀,这样不就没有变量了吗?
jerrymousenet2 2003-07-23
  • 打赏
  • 举报
回复
的确是楼主所讲,关注中......
试了一下yoic的方法。
传参数的方法不行。
至于第二种方法,那么form1是个局部变量,应该也是不成的。
yoisyois 2003-07-23
  • 打赏
  • 举报
回复
最好把
var
Form1: TForm1;放到工程文件里面的Test函数里面声明;
yoisyois 2003-07-23
  • 打赏
  • 举报
回复

function test(AHandle: THandle):wordbool;

begin
AHandle := Application.Handle;
form1:=tform1.Create(application);
try
form1.ShowModal;
if form1.ModalResult=mrOk then
result:=true
else
result:=false;
finally
form1.Free;
end;
end;

调用的时候
if test(Application.Handle)=true then
showmessage('true')
else
showmessage('false');


try it!
LK007 2003-07-23
  • 打赏
  • 举报
回复
把源码下载,编译运行就可以看到出错的地方
  • 打赏
  • 举报
回复
up
wanderung 2003-07-22
  • 打赏
  • 举报
回复
不知道你具体的问题出到什么地方,绝对不是delphi或win2k的原因

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧