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

Delphi关于记录文件的操作

 

本例子几个变量的说明
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关于记录文件的操作的更多相关文章

  1. delphi 基础之三 文件流操作

    文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的, ...

  2. Delphi对ini文件的操作

    一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...

  3. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  4. delphi对ini文件的操作(转载 万一)

    ini 文件操作记要(1): 使用 TIniFileunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Gr ...

  5. Delphi 对ini文件的操作

    界面如图: 代码如下: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Vari ...

  6. DELPHI删除记录文件

    http://blog.itpub.net/729024/viewspace-564890/ DBGrid1.SelectedRows.Delete;

  7. delphi 文件夹操作(监控)

    delphi 监控文件系统 delphi 监控文件系统 你是否想为你的Windows加上一双眼睛,察看使用者在机器上所做的各种操作(例如建立.删除文件:改变文件或目录名字)呢? 这里介绍一种利用Win ...

  8. delphi 文件夹操作

    文件的拖放和打开拖拽 user shellapi type TForm1 = class(TForm) ListView1: TListView; procedure FormCreate(Sende ...

  9. delphi 文件的操作:重命名、复制、移动、删除

    Delphi 文件的操作:重命名.复制.移动.删除第一种方法: RenameFile('Oldname', 'Newname'); CopyFile(PChar('Oldname'), PChar(' ...

随机推荐

  1. jquery.cookie() 方法的使用(读取、写入、删除)

    一个轻量级的cookie 插件,可以读取.写入.删除 cookie. jquery.cookie.js 的配置 首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件. ...

  2. 5X + 2Y +Z = 50 的所有非负整数解

    这种题的解题方法都差不多,不停的循环,不过如果做一下细分,效率应该可以提升很多,下面把最常规效率也最低的代码贴上,有时间再优化 #include <iostream> using name ...

  3. VB6对象与地址相互转换

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (lpDest As ...

  4. iTextSharp 使用详解(转)

    PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下 ...

  5. winform基本控件----按钮

    这次来引用一个我们上课时候老师给的一个实验内容,来说一下winform程序设计中的按钮控件的使用.下面是我们老师给的实验内容. 实验目的: 掌握Winform的开发环境. 掌握窗体的创建和基本方法. ...

  6. OGNL表达式(待解答)

    OGNL表达式的路径到底怎样的?下面代码看不懂为什么要这样?

  7. SQL Server 2012 配置数据库邮件

    发送和接受邮箱不能用QQ邮箱,可以用163网易邮箱,同时要求要发送邮件的计算机能上外网 查看163网易邮箱的发送和接收服务器的方法如下 在数据库的管理中,右击数据库邮件,选择配置数据库邮件 出现对话框 ...

  8. jquery判断复选框checkbox是否被选中

    jquery判断复选框checkbox是否被选中 使用is方法 //如果选中返回true //如果未选中返回false .is(':checked');

  9. Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法

    之前遇到一个问题,在Pycharm或IPython之类的IDE上运行脚本正常,但是直接运行或cmd命令行运行的时候报了模块未能找到的错误--ImportError: No Module named . ...

  10. 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()

    源网址: http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这 ...