unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,persrec, ComCtrls;type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Label4: TLabel;
    Edit2: TEdit;
    Label5: TLabel;
    Edit3: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    DateTimePicker1: TDateTimePicker;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender:TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    personrec:Tpersonrec;
    recordstream:Trecordstream;
    procedure showcurrentrecord;
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
 if fileexists(filename) then //    在此报错!!!!!!!!!!!!!
  recordstream:=Trecordstream.Create(filename,fmopenreadwrite)
 else
  recordstream:=Trecordstream.Create(filename,fmcreate);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
 recordstream.free
end;procedure TForm1.ShowCurrentRecord;
begin
 recordstream.readrec(personrec);
 with personrec do
 begin
  edit1.Text:=name;
  edit2.Text:=id;
  edit3.Text:=sex;
  datetimepicker1.Date:=birthday;
  edit4.Text:=intostr(age);
 end;
 label1.Caption:=inttostr(recordstream.currec);
 label2.Caption:=inttostr(recordstream.numrecs);
end;procedure TForm1.FormShow(Sender:TObject);
begin
 if recordstream.numrecs<>0then
  showcurrentrecord;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
 with personrec do
 begin
  name:=edit1.Text;
  id:=edit2.Text;
  sex:=edit3.Text;
  birthday:=datetimepicker1.Date;
  age:=strtoint(edit4.Text);
 end;
 recordstream.appendrec(personrec);
 showcurrentrecord;
end;procedure TForm1.Button5Click(Sender: TObject);
begin
 with personrec do
 begin
  name:=edit1.Text;
  id:=edit2.Text;
  sex:=edit3.Text;
  birthday:=datetimepicker1.Date;
  age:=strtoint(edit4.Text);
 end;
 recordstream.writerec(personrec);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
 if recordstream.numrecs<>0 then
 begin
  recordstream.first;
  showcurrentrecord;
 end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
 if recordstream.numrecs<>0 then
  begin
   recordstream.nextrec;
   showcurrentrecord;
  end;
end;procedure TForm1.Button7Click(Sender: TObject);
begin
 if recordstream.numrecs<>0 then
 begin
  recordstream.last;
  showcurrentrecord;
 end;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
 if recordstream.numrecs<>0 then
 begin
  recordstream.previousrec;
  showcurrentrecord;
 end;
end;procedure TForm1.Button6Click(Sender: TObject);
begin
 edit1.Text:='';
 edit2.Text:='';
 edit3.Text:='';
 edit4.Text:='';
end;end.错误信息:[错误] Unit1.pas(58): Undeclared identifier: 'filename'我认为应该不是函数问题,是不是没有指明“filename”的路径,还是其他什么原因,请高手指点。

解决方案 »

  1.   

    意思是说filename这个标识符没有声明,解决方法1,声明一个全局变量,如果只有一个Tform1实例,问题不大
    type
    TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ...
    end;var
      Form1: TForm1;
      filename: string; //这里增加一个声明implementation
    ...
    注意创建Tform1的实例前,应该先设置filename的值
      

  2.   

    晕,lz第一天用delphi? 明明是没有定义filename
      

  3.   

    错误信息:[错误] Unit1.pas(58): Undeclared identifier: 'filename'我认为应该不是函数问题,是不是没有指明“filename”的路径,还是其他什么原因,请高手指点。------------------------
    无语了失声痛哭了