📄 contact.pas
字号:
unit Contact;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
edtName: TEdit;
edtTel: TEdit;
edtOffice: TEdit;
edtAddress: TEdit;
btnFirst: TButton;
btnPrevious: TButton;
btnNext: TButton;
btnLast: TButton;
btnAppend: TButton;
btnClear: TButton;
btnClose: TButton;
procedure FormCreate(Sender: TObject);
procedure MoveToFirst(Sender: TObject);
procedure Backward(Sender: TObject);
procedure Next(Sender: TObject);
procedure MoveToLast(Sender: TObject);
procedure Add(Sender: TObject);
procedure CloseForm(Sender: TObject);
procedure ClearForm(Sender: TObject);
private
{ Private declarations }
procedure SaveRecord;
procedure ShowRecord;
procedure ClearData;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//myself code
type
Person = record
name:string[8];
phone:string[20];
office:string[30];
address:string[60];
end;
var
PersonFile: File of Person;
PersonData:Person;
myFile:string;
RecSize,CurRec:Longint;
procedure TForm1.SaveRecord;
begin
//向数据文件中添加一条新的数据记录
PersonData.name := edtName.Text;
PersonData.phone := edtTel.Text;
PersonData.office := edtOffice.Text;
PersonData.address := edtAddress.Text;
Write(PersonFile,PersonData);
end;
procedure TForm1.ClearData;
begin
//清除输入字段
edtName.Text := '';
edtTel.Text := '';
edtOffice.Text := '';
edtAddress.Text := '';
end;
procedure TForm1.ShowRecord;
begin
//显示目前文件指针指向的那条记录
Form1.edtName.Text := PersonData.name;
Form1.edtTel.Text := PersonData.phone;
Form1.edtOffice.Text := PersonData.office;
Form1.edtAddress.Text := PersonData.address;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//当程序打开时初始化Form中的编辑框
ClearData;
CurRec := 0; //设置目前文件的记录指针位置
myFile := 'person.dat'; //设置保存数据的文件
AssignFile(PersonFile,myFile); //将文件变量和文件相关联
RecSize := SizeOf(PersonData); //计算每条数据记录的长度
if FileExists(myFile) then
begin
Reset(PersonFile);
if not Eof(PersonFile) then
begin
Read(PersonFile,PersonData);
ShowRecord;
end
end
else
begin
ClearData;
ReWrite(PersonFile);
end;
end;
procedure TForm1.MoveToFirst(Sender: TObject);
begin
CurRec := 0;
Seek(PersonFile,CurRec); //把文件指针移到文件的开头
Read(PersonFile,PersonData);
ShowRecord;
end;
procedure TForm1.Backward(Sender: TObject);
begin
//将文件的指针向后移一条记录
if(CurRec - 1) < 0 then
begin
CurRec := 0;
Seek(PersonFile,CurRec);
ShowMessage('已经到达文件的开始!');
end
else
begin
CurRec := CurRec - 1;
Seek(PersonFile,CurRec);
Read(PersonFile,PersonData);
ShowRecord;
end;
end;
procedure TForm1.Next(Sender: TObject);
begin
//把文件指针向前移动一条记录
CurRec := CurRec +1;
Seek(PersonFile,CurRec);
if not Eof(PersonFile) then
begin
Read(PersonFile,PersonData);
Seek(PersonFile,CurRec);
ShowRecord;
end
else
begin
CurRec := CurRec -1;
Seek(PersonFile,CurRec);
ShowMessage('已经到达文件的末尾!');
end;
end;
procedure TForm1.MoveToLast(Sender: TObject);
begin
CurRec := FileSize(PersonFile) - 1;
Seek(PersonFile,CurRec); //把文件的指针移到文件的末尾
Read(PersonFile,PersonData);
ShowRecord;
end;
procedure TForm1.Add(Sender: TObject);
begin
if Form1.edtName.Text <> '' then
begin
SaveRecord;
ShowRecord;
ShowMessage('已经把数据写入文件中!!');
clearData;
end;
end;
procedure TForm1.CloseForm(Sender: TObject);
begin
SaveRecord;
CloseFile(PersonFile);
Close;
end;
procedure TForm1.ClearForm(Sender: TObject);
begin
ClearData;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -