• Delphi文件操作读文件写文件操作文件


    原文来自: 100脚本网

    本例子几个变量的说明
    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);

  • 相关阅读:
    水晶苍蝇拍:微薄投资感悟摘录(四) (2012-04-03 14:11:01)
    水晶苍蝇拍:投资感悟(三)(手打,有删减)
    水晶苍蝇拍:投资感悟(二)(2011-12-27 08:17:54)
    leetcode -- String to Integer (atoi)
    leetcode -- Longest Palindromic Substring
    leetcode -- Longest Substring Without Repeating Characters
    leetcode -- Add Two Numbers
    QQ截图工具截取
    LUA学习笔记(第5-6章)
    Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected
  • 原文地址:https://www.cnblogs.com/python001/p/4306564.html
Copyright © 2020-2023  润新知