当在DLL中打开了窗体,如果在finalization 段对窗体变量进行释放,那么在调用DLL的主程序退出时就会出错。源码:http://www.snowflower.com.cn/czc/ai/testdll.exe此源码在98下又可以正常运行,我想应该是WIN2K的内存管理和DELPHI的机制有冲突吧。 有人知道具体的原因吗?

解决方案 »

  1.   

    不知道你具体的问题出到什么地方,绝对不是delphi或win2k的原因
      

  2.   


     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!
      

  3.   

    最好把
    var
      Form1: TForm1;放到工程文件里面的Test函数里面声明;
      

  4.   

    的确是楼主所讲,关注中......
    试了一下yoic的方法。
    传参数的方法不行。
    至于第二种方法,那么form1是个局部变量,应该也是不成的。
      

  5.   

    可以直接用with TForm1.create(Handle) do 的方法来做呀,这样不就没有变量了吗?
      

  6.   

    那么热衷Initialization和Finalization?try..finally..end不是很好吗?用try..finally就不要用Initialization和Finalization了,你用了吗,楼主?***********************伤心~~~~心寒~~~~