您的位置:首页 > 编程语言 > Delphi

Delphi关于记录文件的操作

2013-12-04 17:29 525 查看


本文版权归原作者所有

来源 :http://www.cnblogs.com/railgunman/archive/2010/08/16/1801004.html


本例子几个变量的说明

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Delphi 记录文件