unit MainForm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, untClassStudent, untClassTeacher, StdCtrls;type
TForm1 = class(TForm)
lbTeacher: TListBox;
lbStudent: TListBox;
btnTeacher: TButton;
btnStudent: TButton;
procedure btnTeacherClick(Sender: TObject);
procedure btnStudentClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ATeacher:TTeacher;
AStudent:TStudent;implementation
{$R *.dfm}procedure TForm1.btnTeacherClick(Sender: TObject);
begin
ATeacher:=TTeacher.Create('马萍',Female,28,'讲师');
lbTeacher.Items.Add('教师姓名:'+ATeacher.Name); //显示ATeacher变量的Name域
lbTeacher.Items.Add('教师性别:'+ATeacher.Sex);
lbTeacher.Items.Add('教师年龄:'+IntToStr(ATeacher.Age));
lbTeacher.Items.Add('教师职称:'+ATeacher.TeachPost);
lbTeacher.Items.Add(ATeacher.Talk);
lbTeacher.Items.Add('类变量所分配的存储字节数:'+IntToStr(SizeOf(ATeacher)));
lbTeacher.Items.Add('类实例所分配的存储字节数:'+IntToStr(TTeacher.InstanceSize));
ATeacher.Free; //释放对象实例
Ateacher:=nil;
end;procedure TForm1.btnStudentClick(Sender: TObject);
begin
AStudent:=TStudent.Create; //创建对象实例
AStudent.Name:='李大江';
AStudent.Sex:=True;
AStudent.Birthday:=EncodeDate(1986,2,18);
lbStudent.Items.Add('学生姓名:'+AStudent.Name); //显示ATeacher变量的Name域
if AStudent.Sex then
lbStudent.Items.Add('男')
else
lbStudent.Items.Add('女');
lbStudent.Items.Add('学生生日:'+DateToStr(AStudent.Birthday));
lbStudent.Items.Add(AStudent.Talk);
lbStudent.Items.Add('类变量所分配的存储字节数:'+IntToStr(SizeOf(AStudent)));
lbStudent.Items.Add('类实例所分配的存储字节数:'+IntToStr(TStudent.InstanceSize));
AStudent.Free; //释放对象实例
end;end.unit untClassTeacher;interfaceuses
controls, Dialogs, DateUtils;type
TTeacher=class
private
FName:string; //姓名
FSex:Boolean; //性别
FBirthday:TDate; //出生日期
FTeachPost:string;
function GetAge: Integer;
function GetSex: string;
procedure SetAge(const Value: Integer);
procedure SetSex(const Value: string); //职称
public
constructor Create(NValue:string;SValue:Boolean;BValue:TDate;TPValue:string);overload;//构造创建方法(重载)
constructor Create(N,S:string;A:Integer;T:string);overload;
destructor Destroy;override; //析构方法,销毁对象(覆盖)
function Talk:string;
property Name:string read FName write FName;
property Sex:string read GetSex write SetSex;
property Age:Integer read GetAge write SetAge;
property TeachPost:string read FTeachPost write FTeachPost;
end;implementation{ TTeacher }constructor TTeacher.Create(NValue:string;SValue:Boolean;BValue:TDate;TPValue:string); //TTeacher.一定要全称!!切记!
begin
FName:=NValue;
FSex:=SValue;
FBirthday:=BValue;
FTeachPost:=TPValue;
end;function TTeacher.Talk:string;
begin
Result:='I am a teacher';
end;destructor TTeacher.Destroy ;
begin
ShowMessage('Instance object has been destroyed.');
end;constructor TTeacher.Create(N, S: string; A: Integer; T: string);
begin
Name:=N;
Sex:=S;
Age:=A;
TeachPost:=T;
end;function TTeacher.GetAge: Integer;
begin
Result:=YearOf(Now)-YearOf(FBirthDay);
end;function TTeacher.GetSex: string;
begin
if FSex then
Result:='男'
else
Result:='女';
end;procedure TTeacher.SetAge(const Value: Integer);
begin
if(Value<=200) and (Value>0) then
FBirthDay:=EncodeDate(YearOf(Now)-Value,1,1)
else
raise Exception.Create('年龄输入有误');
end;procedure TTeacher.SetSex(const Value: string);
begin
if(Value='男') or (UpperCase(Value)='MALE') or (UpperCase(Value)='TRUE') then
FSex:=True
else if(Value='女') or (UpperCase(Value)='FEMALE') or (UpperCase(Value)='FALSE') then
FSex:=False
else
raise Exception.Create('性别输入有误');
end;end.
unit untClassStudent;interfaceuses
controls;type
TStudent=class
Name:string; //姓名
Sex:Boolean; //性别
Birthday:TDate; //出生日期
function Talk:string;
end;implementation{ TStudent }function TStudent.Talk:string;
begin
Result:='I am learning programing.';
end;end.
运行出现的问题是:
[Error] untClassTeacher.pas(62): Undeclared identifier: 'YearOf'
[Error] untClassTeacher.pas(76): Undeclared identifier: 'EncodeDate'
[Error] untClassTeacher.pas(76): Undeclared identifier: 'YearOf'
[Error] untClassTeacher.pas(78): Undeclared identifier: 'Exception'
[Error] untClassTeacher.pas(78): There is no overloaded version of 'Create' that can be called with these arguments
[Error] untClassTeacher.pas(83): Undeclared identifier: 'UpperCase'
[Error] untClassTeacher.pas(83): Operator not applicable to this operand type
[Warning] untClassTeacher.pas(83): Combining signed and unsigned types - widened both operands
[Error] untClassTeacher.pas(85): Operator not applicable to this operand type
[Warning] untClassTeacher.pas(85): Combining signed and unsigned types - widened both operands
[Error] untClassTeacher.pas(88): Undeclared identifier: 'Exception'
[Error] untClassTeacher.pas(88): There is no overloaded version of 'Create' that can be called with these arguments
[Fatal Error] MainForm.pas(7): Could not compile used unit 'untClassTeacher.pas'
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, untClassStudent, untClassTeacher, StdCtrls;type
TForm1 = class(TForm)
lbTeacher: TListBox;
lbStudent: TListBox;
btnTeacher: TButton;
btnStudent: TButton;
procedure btnTeacherClick(Sender: TObject);
procedure btnStudentClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ATeacher:TTeacher;
AStudent:TStudent;implementation
{$R *.dfm}procedure TForm1.btnTeacherClick(Sender: TObject);
begin
ATeacher:=TTeacher.Create('马萍',Female,28,'讲师');
lbTeacher.Items.Add('教师姓名:'+ATeacher.Name); //显示ATeacher变量的Name域
lbTeacher.Items.Add('教师性别:'+ATeacher.Sex);
lbTeacher.Items.Add('教师年龄:'+IntToStr(ATeacher.Age));
lbTeacher.Items.Add('教师职称:'+ATeacher.TeachPost);
lbTeacher.Items.Add(ATeacher.Talk);
lbTeacher.Items.Add('类变量所分配的存储字节数:'+IntToStr(SizeOf(ATeacher)));
lbTeacher.Items.Add('类实例所分配的存储字节数:'+IntToStr(TTeacher.InstanceSize));
ATeacher.Free; //释放对象实例
Ateacher:=nil;
end;procedure TForm1.btnStudentClick(Sender: TObject);
begin
AStudent:=TStudent.Create; //创建对象实例
AStudent.Name:='李大江';
AStudent.Sex:=True;
AStudent.Birthday:=EncodeDate(1986,2,18);
lbStudent.Items.Add('学生姓名:'+AStudent.Name); //显示ATeacher变量的Name域
if AStudent.Sex then
lbStudent.Items.Add('男')
else
lbStudent.Items.Add('女');
lbStudent.Items.Add('学生生日:'+DateToStr(AStudent.Birthday));
lbStudent.Items.Add(AStudent.Talk);
lbStudent.Items.Add('类变量所分配的存储字节数:'+IntToStr(SizeOf(AStudent)));
lbStudent.Items.Add('类实例所分配的存储字节数:'+IntToStr(TStudent.InstanceSize));
AStudent.Free; //释放对象实例
end;end.unit untClassTeacher;interfaceuses
controls, Dialogs, DateUtils;type
TTeacher=class
private
FName:string; //姓名
FSex:Boolean; //性别
FBirthday:TDate; //出生日期
FTeachPost:string;
function GetAge: Integer;
function GetSex: string;
procedure SetAge(const Value: Integer);
procedure SetSex(const Value: string); //职称
public
constructor Create(NValue:string;SValue:Boolean;BValue:TDate;TPValue:string);overload;//构造创建方法(重载)
constructor Create(N,S:string;A:Integer;T:string);overload;
destructor Destroy;override; //析构方法,销毁对象(覆盖)
function Talk:string;
property Name:string read FName write FName;
property Sex:string read GetSex write SetSex;
property Age:Integer read GetAge write SetAge;
property TeachPost:string read FTeachPost write FTeachPost;
end;implementation{ TTeacher }constructor TTeacher.Create(NValue:string;SValue:Boolean;BValue:TDate;TPValue:string); //TTeacher.一定要全称!!切记!
begin
FName:=NValue;
FSex:=SValue;
FBirthday:=BValue;
FTeachPost:=TPValue;
end;function TTeacher.Talk:string;
begin
Result:='I am a teacher';
end;destructor TTeacher.Destroy ;
begin
ShowMessage('Instance object has been destroyed.');
end;constructor TTeacher.Create(N, S: string; A: Integer; T: string);
begin
Name:=N;
Sex:=S;
Age:=A;
TeachPost:=T;
end;function TTeacher.GetAge: Integer;
begin
Result:=YearOf(Now)-YearOf(FBirthDay);
end;function TTeacher.GetSex: string;
begin
if FSex then
Result:='男'
else
Result:='女';
end;procedure TTeacher.SetAge(const Value: Integer);
begin
if(Value<=200) and (Value>0) then
FBirthDay:=EncodeDate(YearOf(Now)-Value,1,1)
else
raise Exception.Create('年龄输入有误');
end;procedure TTeacher.SetSex(const Value: string);
begin
if(Value='男') or (UpperCase(Value)='MALE') or (UpperCase(Value)='TRUE') then
FSex:=True
else if(Value='女') or (UpperCase(Value)='FEMALE') or (UpperCase(Value)='FALSE') then
FSex:=False
else
raise Exception.Create('性别输入有误');
end;end.
unit untClassStudent;interfaceuses
controls;type
TStudent=class
Name:string; //姓名
Sex:Boolean; //性别
Birthday:TDate; //出生日期
function Talk:string;
end;implementation{ TStudent }function TStudent.Talk:string;
begin
Result:='I am learning programing.';
end;end.
运行出现的问题是:
[Error] untClassTeacher.pas(62): Undeclared identifier: 'YearOf'
[Error] untClassTeacher.pas(76): Undeclared identifier: 'EncodeDate'
[Error] untClassTeacher.pas(76): Undeclared identifier: 'YearOf'
[Error] untClassTeacher.pas(78): Undeclared identifier: 'Exception'
[Error] untClassTeacher.pas(78): There is no overloaded version of 'Create' that can be called with these arguments
[Error] untClassTeacher.pas(83): Undeclared identifier: 'UpperCase'
[Error] untClassTeacher.pas(83): Operator not applicable to this operand type
[Warning] untClassTeacher.pas(83): Combining signed and unsigned types - widened both operands
[Error] untClassTeacher.pas(85): Operator not applicable to this operand type
[Warning] untClassTeacher.pas(85): Combining signed and unsigned types - widened both operands
[Error] untClassTeacher.pas(88): Undeclared identifier: 'Exception'
[Error] untClassTeacher.pas(88): There is no overloaded version of 'Create' that can be called with these arguments
[Fatal Error] MainForm.pas(7): Could not compile used unit 'untClassTeacher.pas'
解决方案 »
- 悲了个摧的,这回2了
- 现场80分,我用frxPreView做预览窗口,怎么用语句实现一些功能。
- 关于关闭运行中某个询问的确认窗体的问题,请各位高手帮帮忙,万分感谢!!!!
- 一个排错问题,请各位帮帮忙!在此感谢
- 窗体的设置,请指点!!!
- 如何使在Edit中输入的文字显示在右边,就像Label的Alignment属性一样的效果
- 求助,关于idtcpserver的问题
- 再打包过程中,如何解决BDE的安装?
- NMPOP3控件收到邮件后邮件主题为何是乱码
- 我的程序只有一个窗口,我在设计时将其visible属性设为false,但在应用自动创建窗体时又将其设为true,这样,窗体还是可见的。问题是:能不能在窗体显示之前,将其设为不可见的?
- delphi求助 关联查询
- delphi求助
untClassTeacher单元:
uses
controls, Dialogs, DateUtils, SysUtils;