如题,太见鬼了!
Classes.registerClass(TFrmXXX);
f :=GetClass('TFrmXXX');
if f<>nil then
  begin 
  FindClass('TFrmXXX')
  ...
  end;
为了测试,RegisterClass与GetClass紧连着的上下两句,GetClass后居然为nil!!
而在其它工程里就没问题,会是什么原因造成这种现象呢?太难以理解了

解决方案 »

  1.   

    开始就是在initialization里注册的,是因为不成功,为了测试才把两句连在一起进行了测试,所以不是位置的原因
      

  2.   

    我也碰到这种情况了,不是bpl,就是单一的EXE程序中,如果建一个简单的工程,倒是测试可以,但是在一个比较大的工程中就出现这种问题了,找不到原因,郁闷,求高手解答
      

  3.   

    找到了一个办法,随便哪个单元加一个语句就可以了initialization
      ActivateClassGroup(TControl);但是还是不知道为什么要这样,好像是注册的类所在的TRegGroup不是Activate,所以找不到注册的类,猜测跟程序中所用的控件或者引用的单元有关,在某些单元里调用RegisterClass时,把TControl及子类的所在的RegGroup的Activate变成false,导致自己写的代码中GetClass返回nil
      

  4.   

    过了这么久不,还是没有找到问题的原因。但可以用zpy_1984的方式解决,虽然不知道是为什么:
    initialization
      ActivateClassGroup(TControl);注:TControl也可以换成任何一个工程中已经存在的窗体类
    似乎此句是将注册表项激活,但不知道原因