{/*********************************************/}
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
type
Temployee1 = Record //问题是想把Record 换成 class(TObject)
Name : String[25];
Title : String[25];
HourlyPayRate : Double;
end;
var
Nano : Temployee1;
begin
Nano.Name := 'Paul';
Nano.Title := 'NBA球星';
Nano.High := 1.83;
Form1.Memo1.Text := Nano.Name + #13#10 + Nano.Title + #13#10 +
FloatToStr(Nano.High ) + 'm';
ShowMessage(Format('%s——%s,身高 %f m',[Nano.Title,Nano.Name,Nano.High]));
//窗口显示
end;
{/*************************************************************/}
上面给出的程序是可以编译通过的,我想把 Temployee1 的父类换一下,换成class(TObject),编译时会有警告:
[Warning] Temployee.pas(45): Variable 'Nano' might not have been initialized;
警告说我的变量 'Nano' 可能没有初始化,现在我不知道怎么解决,请求高手现身!
7 个解决方案
#1
类实际只是个指针
改成类的话,在使用对象之前要加上
Nano := Temployee1.Create;
改成类的话,在使用对象之前要加上
Nano := Temployee1.Create;
#2
Record 是记录
Class 是类
根本就是DELPHI里的两套东西,
Class 是类
根本就是DELPHI里的两套东西,
#3
用你的方法试了一下,编译通过已经没有问题了。可能是我刚刚接触Delphi,但是我还有一个疑问,'.Create'它的作用是干什么的?还有就是 'Form1’ 对应的类是 class(TForm),那么Form1在使用的时候为什么不用初始化?
哈哈,分不用担心,一定会给你!
哈哈,分不用担心,一定会给你!
#4
用你的方法试了一下,编译通过已经没有问题了。可能是我刚刚接触Delphi,但是我还有一个疑问,'.Create'它的作用是干什么的?还有就是 'Form1’ 对应的类是 class(TForm),那么Form1在使用的时候为什么不用初始化?
哈哈,分不用担心,一定会给你!
哈哈,分不用担心,一定会给你!
#5
Create是默认的构造方法,就是初始化这个类,是TObject里的,在调用时分配对象的空间并返回对象,但除此之外不会做任何操作
你可以自己定义这个方法在里面加入自己初始化对象的代码
这是我自己的程序,略去了部分无关内容
你可以自己定义这个方法在里面加入自己初始化对象的代码
这是我自己的程序,略去了部分无关内容
type
TNormalMeasure =
class(TMeasure)
public constructor Create(Source: string);
public function GetType: MeasureType; override;
//...
end;
implementation
constructor TNormalMeasure.Create(Source: string);
var
s: string;
i: integer;
begin
s:='';
for i:=1 to length(Source) do
if Source[i]<>' ' then s:=s+Source[i];
data := s;
end;
function TNormalMeasure.GetType: MeasureType;
begin
Result := M_NORMAL;
end;
//...
#6
form其实也需要初始化,打开windows程序的.dpr就能看到初始化form的代码
Application.CreateForm(TForm1, Form1);
用这个调用了而已
Application.CreateForm(TForm1, Form1);
用这个调用了而已
#7
cfvmario
谢谢你的回答,现在我已经清楚我问的东西了,感谢你帮忙。就此结贴!
谢谢你的回答,现在我已经清楚我问的东西了,感谢你帮忙。就此结贴!
#1
类实际只是个指针
改成类的话,在使用对象之前要加上
Nano := Temployee1.Create;
改成类的话,在使用对象之前要加上
Nano := Temployee1.Create;
#2
Record 是记录
Class 是类
根本就是DELPHI里的两套东西,
Class 是类
根本就是DELPHI里的两套东西,
#3
用你的方法试了一下,编译通过已经没有问题了。可能是我刚刚接触Delphi,但是我还有一个疑问,'.Create'它的作用是干什么的?还有就是 'Form1’ 对应的类是 class(TForm),那么Form1在使用的时候为什么不用初始化?
哈哈,分不用担心,一定会给你!
哈哈,分不用担心,一定会给你!
#4
用你的方法试了一下,编译通过已经没有问题了。可能是我刚刚接触Delphi,但是我还有一个疑问,'.Create'它的作用是干什么的?还有就是 'Form1’ 对应的类是 class(TForm),那么Form1在使用的时候为什么不用初始化?
哈哈,分不用担心,一定会给你!
哈哈,分不用担心,一定会给你!
#5
Create是默认的构造方法,就是初始化这个类,是TObject里的,在调用时分配对象的空间并返回对象,但除此之外不会做任何操作
你可以自己定义这个方法在里面加入自己初始化对象的代码
这是我自己的程序,略去了部分无关内容
你可以自己定义这个方法在里面加入自己初始化对象的代码
这是我自己的程序,略去了部分无关内容
type
TNormalMeasure =
class(TMeasure)
public constructor Create(Source: string);
public function GetType: MeasureType; override;
//...
end;
implementation
constructor TNormalMeasure.Create(Source: string);
var
s: string;
i: integer;
begin
s:='';
for i:=1 to length(Source) do
if Source[i]<>' ' then s:=s+Source[i];
data := s;
end;
function TNormalMeasure.GetType: MeasureType;
begin
Result := M_NORMAL;
end;
//...
#6
form其实也需要初始化,打开windows程序的.dpr就能看到初始化form的代码
Application.CreateForm(TForm1, Form1);
用这个调用了而已
Application.CreateForm(TForm1, Form1);
用这个调用了而已
#7
cfvmario
谢谢你的回答,现在我已经清楚我问的东西了,感谢你帮忙。就此结贴!
谢谢你的回答,现在我已经清楚我问的东西了,感谢你帮忙。就此结贴!