procedure TForm1.BtnClick(Sender: TObject);  type  
Tobject=class  
i:integer;//这里提示错误  
end;  var  
k:Tobject;  
begin  
k.i:=1;  
Edit1.Text:=IntToStr(k.i);  
end; 
 提示:Local class, interface or object types not allowed是怎么回事.类要写在一定的地方吗?

解决方案 »

  1.   

    TObject是系统基类
    你必须换个名字
      

  2.   

    换成Taobject还是一样的错误.
    写在另一个单元?是什么意思?
      

  3.   

     type     
    Taobject=class     
    i:integer;//这里提示错误     
    end;   procedure   TForm1.BtnClick(Sender:   TObject);        
    var     
    k:Taobject;     
    begin     
    k.i:=1;     
    Edit1.Text:=IntToStr(k.i);     
    end;   
      

  4.   

    type
        Tobject = class
        i:integer;
    end;
    procedure TForm1.BtnClick(Sender: TObject);//错误var
        k:Tobject;
    begin
        k.i:=1;
        Edit1.Text:=IntToStr(k.i);
    end;还是错误.
      

  5.   

    unit Unit1d;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Btn: TButton;
        Edit1: TEdit;
        procedure BtnClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    type
        Taobject = class
        i:integer;
    end;
    procedure TForm1.BtnClick(Sender: TObject);var
        k:Taobject;
    begin
        k.i:=1;
        Edit1.Text:=IntToStr(k.i);
    end;end.看吧,该改的我都改了,还是不行.
      

  6.   

    type 
            Tobject   =   class //首先TObject类是VCL的基类,已经定义过了,你不能再这么定义,可以换个尚未用过的类名,如:TAnoherObject =class
            i:integer; 
    end; 
    procedure   TForm1.BtnClick(Sender:   TObject);var 
            k:Tobject; //然后这要改成:k:TAnoherObject;
    begin 
            k.i:=1; 
            Edit1.Text:=IntToStr(k.i); 
    end; //这样就好了,你再试试!
      

  7.   

    var 
            k:Taobject; 
    begin 
            k:=taobject.Create;
            k.i:=1; 
            Edit1.Text:=IntToStr(k.i); 
            k.Free;
    end; 
      

  8.   

    //上面忘了用构造函数了,不好意思,呵呵!
    type
      TAnoherObject       = class
      i: integer;
      end ;
    procedure TForm1.BtnClick(Sender: TObject);
    var
       k:TAnoherObject   ;
    begin
       k:=  TAnoherObject.Create;//类要先调用构造函数才能用的,加上那个这句就好了。
       k.i:=1;
       Edit1.Text:=IntToStr(k.i);
    end;
    //上面的代码我已经在D7上测试过了,没问题。
      

  9.   

    type   
       TAnoherObject  =  class   //首先TObject类是VCL的基类,已经定义过了,你不能再这么定义,可以换个尚未用过的类名,如:TAnoherObject   =class
        i:integer;
    end;
    procedure TForm1.BtnClick(Sender: TObject);var
        k:TAnoherObject;
    begin
        k.i:=1;//这里提示---Variable 'k' might not have been initialized
        Edit1.Text:=IntToStr(k.i);
    end;K需要怎么初始化?
      

  10.   

    k:=     TAnoherObject.Create就是这句,谢谢了.
      

  11.   

    stherix  在11楼的代码很有道理。
    你用完k之后要调用 k.free  这样才合理。