程序调用代码如下:  showmessage('00');
 IF CLHZF= nil THEN
 BEGIN
 showmessage('0');
  CLHZF := TCLHZF.CREATE(SELF);
  END
  ELSE
  BEGIN
    showmessage('2');
END;
 CLHZF.SHOW;
showmessage('00')能显示,   showmessage('2')能正常显示,  showmessage('0')不显示也就是未执行,CLHZF为MDICHILD窗口;但是如果我把在主程序引用的USE 中CLHZF文件删除,依系统提示再加进来程序不会报错,但其它的操作项本来是没问题的有可能又会报错,也就是这个错从这个又转到另外一个地方去了,希望哪位高手能帮忙解答

解决方案 »

  1.   

    showmessage('0')不显示说明if执行不成功,也就是CLHZF没有create,后面调用CLHZF.show当然报错啦
      

  2.   

    IF CLHZF= nil THEN 换成 if not Assigned(CLHZF) then 
      

  3.   

    如果我把在主程序引用的USE 中CLHZF文件删除,依系统提示再加进来程序不会报错,也就是说这句它又执行了,但其它的操作项本来是没问题的有可能又会报错,也就是这个错从这个又转到另外一个地方去了
      

  4.   

    你是不是在这段代码前又对CLHZF进行了别的操作?导致运行到这句时CLHZF不为nil?
      

  5.   

    如果我把在主程序引用的USE 中CLHZF文件删除,依系统提示再加进来程序不会报错,也就是说这句它又执行了,但其它的操作项本来是没问题的有可能又会报错,也就是这个错从这个又转到另外一个地方去了
      

  6.   

    ACCESS violation at address 0046849A in module 'CHD.exe'.Read of address 0000033D.
      

  7.   

    project options forms 双击autocreateforms里的CLHZF,使其到avialable forms
      

  8.   

    我估计你调用了CLHZF.free,而没有调用CLHZF := nil
    所以CLHZF不是nil,但实际上已经被释放