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是怎么回事.类要写在一定的地方吗?
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是怎么回事.类要写在一定的地方吗?
你必须换个名字
写在另一个单元?是什么意思?
Taobject=class
i:integer;//这里提示错误
end; procedure TForm1.BtnClick(Sender: TObject);
var
k:Taobject;
begin
k.i:=1;
Edit1.Text:=IntToStr(k.i);
end;
Tobject = class
i:integer;
end;
procedure TForm1.BtnClick(Sender: TObject);//错误var
k:Tobject;
begin
k.i:=1;
Edit1.Text:=IntToStr(k.i);
end;还是错误.
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.看吧,该改的我都改了,还是不行.
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; //这样就好了,你再试试!
k:Taobject;
begin
k:=taobject.Create;
k.i:=1;
Edit1.Text:=IntToStr(k.i);
k.Free;
end;
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上测试过了,没问题。
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需要怎么初始化?
你用完k之后要调用 k.free 这样才合理。