实例化对象时,一般都必须用Create方法。上面不用的话,会有内存没有分配的错误。

解决方案 »

  1.   

    最常见的错误之一就是,在没有Create之前调用
      

  2.   


        需要创建实际对象时使用Create,若只作为对象指针引用,则可以不用创建。但不管何种情况,如果该对象指向的目标内存没有实际可用对象,或被其它对象指针销毁,再调用其方法时则会产生内存指向错误!
      

  3.   

    Create 只是Delphi约定类构造函数的名字,你可以在自己的类中将构造函数定义成其他的名字,
    使用constructor.
    Var RegF,RegF2:TRegistry; 
     ...
    DoSomething(RegF);  //此时RegF为nil,将引发异常
    RegF:=TRegistry.Create; 
    RegF2 := RegF;
    DoSomething(RegF2);  //RegF2和RegF引用同一个对象,此调用等同于DoSomething(RegF)
      

  4.   

    如果你已经有一个对象的实例,可以把这个实例赋值给其他同类对象变量。
    否则就要创建对象。    Var 
             RegF:TRegistry; 
             RegG:TRegistry; 
        ...
          RegF:=TRegistry.Create; //还没有实例,要创建
          RegG:=RegF; //已有一个实例,可以用赋值