哪些类申明后不用创建(Create)?
告诉我原理吧。

解决方案 »

  1.   

    应该都要吧,有些类申明后没看到用CREATE函数,是因为调用了inherited
    ,父类隐形的调用了CREATE
      

  2.   

    我自定义一个类
    继承TObject
    里面只有一些 整数,字符串类型的属性我试过不创建
    直接使用它的实例,也不报错
      

  3.   

    类是什么?指针,指针当然需要初始化,要把它指向一段数据空间才行啊,即类的实例化!如:
    已存在按钮 Button1var MyForm:TButton;MyForm:=Button1;这时候对MyForm进行操作,就是对Button1操作!没用Create吧?而常见的那个Create不过是控件的祖先类虚构函数
    见TComponent的成员:constructor Create(AOwner: TComponent); virtual;constructor TComponent.Create(AOwner: TComponent);
    begin
      FComponentStyle := [csInheritable];
      if AOwner <> nil then AOwner.InsertComponent(Self);
    end;
    ...一层层看吧,看看是怎么完成初始化的!现在明白什么时候没有Create,什么时候不需要Create了吧?
      

  4.   

    你用一个超大的循环试试看他有没有问题:
    for i:=0 to 90000000000000000000000 do
    begin
      YourObject[i] := TYourObject.Create(nil);
    end;不出意外,你的机子会崩溃。
      

  5.   

    申明一个类的实例 和 申明一个变量
    都是用VAR
    可变量就不用实例化(create)如果是Record什么的,又是属于什么呢?
    变量的类型(如:Integer, Pchar)是不是类?我不太明白。
      

  6.   

    我的理解,可能不太准确类也是一种特殊的数据类型,但是是指针类型
    而Integer,String则是普通的数据类型在 DELPHI里面,如果某个变量申明了一个普通的数据类型的话,系统会自动分配给该变量一段空间,而不用你再去申请空间了,而如果一个变量申明的是指针类型的话,则该变量不过是指向一个地址,而不是给该变量分配一段内存空间,需要你在运行的时候去申请,系统才会给你一段内存的空间

    Var i:Integer;
    Btn1:TButton;对于i,在申明的时候系统已经给了i两个字节的空间,而对于Btn1,系统并没有给他空间,需要Btn1 := TButton.Create(); 进行实例化,此时,系统分配出了一块空间出来,而Btn1则指向了这个空间.我的理解大概就是这样把
      

  7.   

    在DELPHI里没有类是不调用Create,不管是直接调用或间接调用,除非不是类
      

  8.   

    这怎么能一样?没初始化前它们都是单纯的数据,但Create后,是一个按钮实例,它要显示出来,能操作,这和单纯的数据能一样吗?实例和类本省是两个概念!指针很奇妙,做几个有趣的实验!在一个成员过程中,如:procedure TForm1.Button1Click(Sender: TObject);
    var
      Btn:TButton;
    begin
      Showmessage(IntToHex(Integer(Pointer(Btn)),8));//看看地址是什么
    end;单纯Btn.Caption:='Test';试试?这时候类指针Btn到底指向哪?呵呵
      

  9.   

    可能楼主把对象弄错了,
    记录型对象是不要创建可以直接使用的,
    所有从TObject继承下来的对象都要先创建才能使用。