unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyRec = record //定义Record
Name: string[10];
Sex: string[8];
Age: integer;
end;
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
procedure WriteRec(NewRec: TMyRec; RecFileName: string);
procedure ReadRec(GetRec: TMyRec; RecFileName: string; Num: Integer);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
MyRec: TMyRec;
lv_sFileName: string;
begin
MyRec.Name := '张三';
MyRec.Sex := '男';
MyRec.Age := 18;
lv_sFileName := 'C:\MyRec.dat'; //二进制文件
WriteRec(MyRec, lv_sFileName);
//读取第1条记录
ReadRec(MyRec, lv_sFileName, 1);
end;
//写记录
procedure TForm1.WriteRec(NewRec: TMyRec; RecFileName: string);
var
F: file of TMyRec;
RecCount: integer; //Rec数量
begin
AssignFile(F, RecFileName);
if FileExists(RecFileName) <> True then //判断文件是否存在
begin
Rewrite(F); //不存在则新增文件
Write(F, NewRec);
end
else
begin
FileMode := 1; //设置成WriteOnly模式
Reset(F); //存在则添加Rec入文件
RecCount := FileSize(F); //取Rec数量
Seek(F, RecCount); //设置Pointer位置
Write(F, NewRec);
end;
CloseFile(F); //关闭文件
end;
//读取记录
procedure TForm1.ReadRec(GetRec: TMyRec; RecFileName: string; Num: Integer);
var
F: file of TMyRec;
RecCount: Integer; //读取第几条记录
RecMax: integer; //Rec的最大值
begin
RecCount := Num - 1; //用户要提取第一个就输入1,类推
AssignFile(F, RecFileName);
if FileExists(RecFileName) <> True then
exit;
FileMode := 0;
Reset(F);
RecMax := FileSize(F);
if RecCount > RecMax - 1 then
Exit; //超过Rec最大值则跳出
Seek(F, RecCount); //设置读取Rec的Pointer位置
Read(F, GetRec);
Showmessage('记录' + IntToStr(Num) + ':【' + GetRec.Name + ':' + InttoStr(GetRec.Age) + '】');
end;
end.