本例子几个变量的说明 TFileRec = record //记录定义 Day : Integer; ... //其他定义 end; f : File of TFileRec; //标准的输入/输出文件 FilRec : TFileRec; //记录数据 FileName ; //记录文件的名称 关于记录文件的相关操作 (1)记录文件的打开 (2)记录文件的读入和显示 (3)记录的增加 (4)记录的删除 (5)记录的修改 (6)记录文件的删除
1、记录文件的打开 需要使用的方法: AssingFile(f,FileName): Reset(f): //打开一个已经存在的记录文件 Rewrite(f); //新创建一个记录文件 FileSize(f); //返回记录文件记录个数
procedure OpenRecFile(const FileName : string; var f : TFileRec); begin AssingFile(f, FileName): try Reset(f); except //打开文件出现异常的处理 On EInOutError do begin try if FileExists(FileName) = False then //如果文件不存在,创建 ReWrite(MethodFile); else //文件存在,但是打不开,表示这个文件有问题 MessageDlg('文件不能打开', mtWarning, [mbOK], 0); except //创建新文件的时候出现异常的处理 On EInOutError do MessageDlg('文件不能创建', mtWarning, [mbOK], 0); end; end;
end; end;
2、记录文件的读入 需要使用的方法
Read(f, FileRec);
procedure ReadData_FromRecFile; begin for i := 1 to FileSize(f) do begin Read(f, FileRec); ... //其他的处理(比如记录的显示等等) end; end;
3、记录的增加 需要使用的方法 Seek(f, RecNo); //RecNo代表要定位置的记录编号 Write(f, FileRec) 基本思路: 获取指定记录的位置,并把该位置后的记录逐个向后移动
(1)在文件的尾部增加记录 procedure InsertData_AtRecFile_Last(const Data : TFileRec); //需要插入的数据 begin Seek(f, FileSize(f)); Write(f, Data); end; (2)在文件的指定位置前增加记录 procedure InsertData_AtRecFile(const Index : Integer); //索引号 const Data : TFileRec; //需要插入的数据 var nI : Integer; begin if (Index > FileSize(f)) or (Index < 0) then Exit; for nI := FileSize(f) - 1 downto Index do begin seek(f, nI); read(f, FileRec); Seek(f, nI + 1); Write(f, FileRec); end; Seek(f, Index); Write(f, Data); end; 4、记录的删除 需要使用的方法 Seek(f, Index); //Index代表要定位置的记录编号 Write(f, FileRec) Truncate(f) ; //删除指定索引号之后的索引文件 基本思路: 获取指定位置,并把该位置后的记录逐个向前移动。 文件在最后一条记录前截断。
(1)删除指定索引号的记录 procedure DeleteData_FromRecFile(const Index : Integer); var nI : Integer; begin if (Index < 0) or (FileSize(f) = 0) then Exit; for nI := Index + 1 to FileSize(f) - 1 do begin seek(f, nI); read(f, FileRec); seek(f, nI - 1); Write(f, FileRec); end; Seek(f, FileSize(f) - 1); //截断最后一条记录 Truncate(f); end; 5、记录的修改 procedure ModifyData_AtRecFile(const Index : Integer; const Data : TFileRec); begin if (Index < 0) or (FileSize(f) = 0) or (Index > FileSize(f) - 1) then Exit; Seek(f, Index); Write(f, Data); end; 6、记录文件的关闭 CloseFile(f);
|
请发表评论