Undeclared identifier: 问题

guoli12 2012-07-19 01:36:12
unit untClassTeacher;

interface

type
TTeacher=class
Name:string; //姓名
Sex:Boolean; //性别
Birthday:TDate; //出生日期
TeachPost:string; //职称
function Talk:string;
end;

implementation

{ TTeacher }

function TTeacher.Talk: string;
begin
Result:='I am a teacher';
end;

end.



unit untClassStudent;

interface

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.


unit MainForm;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, 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

uses untClassStudent, untClassTeacher;

{$R *.dfm}

procedure TForm1.btnTeacherClick(Sender: TObject);
begin
ATeacher:=TTeacher.Create; //创建对象实例
lbTeacher.Items.Add('教师姓名:'+ATeacher.Name); //显示ATeacher变量的Name域
if ATeacher.Sex then
lbTeacher.Items.Add('布尔字段值为True')
else
lbTeacher.Items.Add('布尔字段值为False');
lbTeacher.Items.Add('教师生日:'+DateToStr(ATeacher.Birthday));
lbTeacher.Items.Add('教师职称:'+ATeacher.TeachPost);
lbTeacher.Items.Add(ATeacher.Talk)
lbTeacher.Items.Add('类变量所分配的存储字节数:'+IntToStr(SizeOf(ATeacher)));
lbTeacher.Items.Add('类实例所分配的存储字节数:'+IntToStr(TTeacher.InstanceSize)));
ATeacher.Free; //释放对象实例
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.
我的所有程序。下面是提示的错误
[Error] MainForm.pas(25): Undeclared identifier: 'TTeacher'
[Error] MainForm.pas(26): Undeclared identifier: 'TStudent'
[Error] untClassStudent.pas(9): Undeclared identifier: 'TDate'
[Fatal Error] MainForm.pas(30): Could not compile used unit '..\简单范例\Exa03-02\untClassStudent.pas'
...全文
519 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
haibo20102008 2012-10-16
  • 打赏
  • 举报
回复
unit untClassTeacher;

interface
uses controls;
type
TTeacher=class
Name:String;
Sex:Boolean;
Birthday:TDate;
TeachPost:String;
destructor Destroy;override;
function Talk:String;
end;

implementation

{ TTeacher }

destructor TTeacher.Destroy;
begin
ShowMessage('Instance object has been destroyed.');
inherited;
end;

function TTeacher.Talk: String;
begin
Result:='I''m a teacher.';
end;

end.



unit MainForm;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,untClassStudent, untClassTeacher;

type
TForm1 = class(TForm)
lbTeacher: TListBox;
lbStudent: TListBox;
btnTeacher: TButton;
btnStudent: TButton;
btnClose: TButton;
procedure btnTeacherClick(Sender: TObject);
procedure btnCloseClick(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.Name :='zhang zhe';
lbTeacher.Items.Add(ATeacher.Name );
ATeacher:=nil;
end;

运行后
[Error] untClassTeacher.pas(21): Undeclared identifier: 'ShowMessage'
[Fatal Error] MainForm.pas(6): Could not compile used unit 'untClassTeacher.pas'
在 unt untclassteacher该如何定义showmessage
haibo20102008 2012-10-15
  • 打赏
  • 举报
回复
在楼主的上述方法中,经过不断的测试终于将问题解决了,这个问题困扰了我一天了,谢谢你的提示啊!
haibo20102008 2012-10-15
  • 打赏
  • 举报
回复
按照上述方法试了,在unit mainform中还是提示 Undeclared identifier: 'TTeacher'和 Undeclared identifier: 'TStudent'

guoli12 2012-07-19
  • 打赏
  • 举报
回复
谢谢各位的帮忙,现在好了
专制的网站 2012-07-19
  • 打赏
  • 举报
回复
Undeclared、redeclared 这些单词不难啊啊,自己试着排错啊
专制的网站 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
出现新的错误:
[Error] untClassStudent.pas(6): Identifier redeclared: 'System'
[/Quote]
那就把 system去掉 ...............
guoli12 2012-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

unit MainForm; 里面,把

uses untClassStudent, untClassTeacher;删掉,放到这里来

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, untClassStudent, untC……
[/Quote]
出现新的错误:
[Error] untClassStudent.pas(6): Identifier redeclared: 'System'
[Fatal Error] MainForm.pas(7): Could not compile used unit '..\简单范例\Exa03-02\untClassStudent.pas'
专制的网站 2012-07-19
  • 打赏
  • 举报
回复
unit MainForm; 里面,把

uses untClassStudent, untClassTeacher;删掉,放到这里来

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, untClassStudent, untClassTeacher;


你的 unit untClassStudent; 里面 用到 TDate ,就加上 uses system, controls;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧