Delphi文件操做-读文件-写文件-操做文件

本例子几个变量的说明
TFileRec = record   //记录定义
Day : Integer;
...          //其余定义
end;
f : File of TFileRec;    //标准的输入/输出文件
FilRec : TFileRec;      //记录数据
FileName ;               //记录文件的名称
关于记录文件的相关操做
(1)记录文件的打开 
(2)记录文件的读入和显示
(3)记录的增长
(4)记录的删除
(5)记录的修改
(6)记录文件的删除索引

 

一、记录文件的打开
须要使用的方法:
AssingFile(f,FileName):
Reset(f):        //打开一个已经存在的记录文件
Rewrite(f);         //新建立一个记录文件
FileSize(f);       //返回记录文件记录个数string


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;it

  end;
end;ast

二、记录文件的读入
须要使用的方法变量

Read(f, FileRec);方法


procedure ReadData_FromRecFile;
begin
  for i := 1 to FileSize(f) do
  begin
    Read(f, FileRec);
    ... //其余的处理(好比记录的显示等等)
  end;
end;数据

三、记录的增长
须要使用的方法 
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;
四、记录的删除
须要使用的方法 
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;
五、记录的修改
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; 
六、记录文件的关闭
CloseFile(f);di