`

Delphi文本文件读写

阅读更多
Delphi文本文件读写 (2008-10-31 19:07:22)
Delphi 支持三种文件类型: 文本文件、记录文件、无类型文件。

文本文件是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。

文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。

文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。

1.文件变量与文件名关联:
AssignFile(VarTxt, FileName);
FileName 如果省略路径将默认当前目录。

2.初始化读写有三种方式:
(1) Reset: 只读打开, 指针移到文件头;
(2) Rewrite: 创建新文件并打开, 只写;
(3) Append: 从尾部追加, 指针当然在文件尾。

文件不存在时使用 Reset 或 Append 会引发一个I/O异常。

最后用 CloseFile 关闭文件。

为保持兼容,Delphi 也允许用户用 Assign 建立关联, 用 Close 关闭文件。

 
//读写示例:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
var
  F: Text;  //TextFile 和 Text 是一样的
  FileName: string = 'c:\temp\test.txt';
//写文件
procedure TForm1.Button1Click(Sender: TObject);
begin
  AssignFile(F,FileName);
  Rewrite(F);  //会覆盖已存在的文件
  Writeln(F, '第一行');
  Writeln(F, '第二行');
  CloseFile(F);
end;
//读文件(先执行写文件)
procedure TForm1.Button2Click(Sender: TObject);
var
  s: string;
begin
  AssignFile(F,FileName);
  Reset(F);  //只读打开
  Readln(F, s);   //读取
  ShowMessage(s); //显示: 第一行
  Readln(F, s);   //继续读取
  ShowMessage(s); //显示: 第二行
  CloseFile(F);
end;
//追加
procedure TForm1.Button3Click(Sender: TObject);
begin
  AssignFile(F,FileName);
  Append(F);  //打开准备追加
  Writeln(F, '第三行');
  Writeln(F, '第四行');
  CloseFile(F);
end;
//读取全部(需要Memo帮忙显示)
procedure TForm1.Button4Click(Sender: TObject);
var
  s: string;
begin
  AssignFile(F,FileName);
  Reset(F);  //只读打开
  Memo1.Clear;
  while not Eof(F) do
  begin
    Readln(F, s);
    Memo1.Lines.Add(s);
  end;
  CloseFile(F);
end;
//分列写入
procedure TForm1.Button5Click(Sender: TObject);
  //这个过程级函数的功能是: 用空格把 s 凑够 n 的长度
  function AddSpace(s: string; n: Word): string;
  begin
    while Length(s) < n do
    begin
      s := s + ' ';
    end;
    Result := s;
  end;
var
  name: string[8];
  address: string[16];
begin
  AssignFile(F, FileName);
  Rewrite(F);
  name := '张三';
  name := AddSpace(name,8);
  address := '山东泰安';
  address := AddSpace(address,16);
  Writeln(F, name, address);
  name := '李四儿';
  name := AddSpace(name,8);
  address := '贵州省安顺黄果树';
  address := AddSpace(address,16);
  Writeln(F, name, address);
  name := '王二麻子';
  name := AddSpace(name,8);
                    
  address := AddSpace(address,16);
  Writeln(F, name, address);
  CloseFile(F);
{写入的结果是:
  张三    山东泰安
  李四儿  贵州省安顺黄果树
  王二麻子北京市海淀区
}
end;
//分列读取
procedure TForm1.Button6Click(Sender: TObject);
var
  name: string[8];
  address: string[16];
begin
  AssignFile(F, FileName);
  Reset(F);
  Memo1.Clear;
  while not Eof(F) do
  begin
    Readln(F, name);
    Memo1.Lines.Add(name);
  end;
  CloseFile(F);
  Reset(F);
  while not Eof(F) do
  begin
    Readln(F, name, address);
    Memo1.Lines.Add(address);
  end;
  CloseFile(F);
{读取结果:
  张三    
  李四儿  
  王二麻子
  山东泰安        
  贵州省安顺黄果树
  北京市海淀区    
}
end;
//不同数据类型的写入和读取
procedure TForm1.Button7Click(Sender: TObject);
var
  name: string[6];
  age: Word;
  birthday: TDate;
begin
  AssignFile(F,FileName);
  Rewrite(F);
  name := '菜花  ';  //加两个空格凑够6个字符
  age := 18;
  birthday := StrToDate(DateToStr(Now-18*365));  //假如她今天过生日
  Writeln(F,name,age,birthday);
  CloseFile(F);
  Reset(F);
  Readln(F,name,age,birthday);
  Memo1.Clear;
  Memo1.Lines.Add(name);
  Memo1.Lines.Add(IntToStr(age));
  Memo1.Lines.Add(DateToStr(birthday));
  CloseFile(F);
{读取结果:
  菜花
  18
  1989-12-23
}
//其实这样的东西应该用类型文件操作更合适, 但如果有这样的文本文件让你读取呢?
end;
end.
分享到:
评论

相关推荐

    Delphi直接读写文本文件

    Delphi直接读写文本文件的方法,不通过Memo控件,直接将字符串写入文件,或者从文件中读出来。很使用

    delphi 文件读写

    delphi 格式文本文件的读写。。。。。

    Delphi通过Memo读写文本文件和ini文件源码.rar

    好久没给大家分享Delphi源代码了,这里给大家一个delphi读写txt和ini的实例,通过Memo读写文本文件和ini文件源码

    fileOpt.rar_delphi文本文件_读写文件

    delphi中文本文件的读写操作,适合新手使用,操作非常简单

    delphi 操作文本文件

    delphi操作文本文件,可以读写内容,制作配置程序。

    delphi 读写文本文件.mht

    delphi 读写文本文件.mht

    Delphi读写UTF-8、Unicode格式文本文件 .mht

    Delphi读写UTF-8、Unicode格式文本文件 .mht

    Delphi读写文本文件(通过Memo)和ini文件

    Delphi读写文本文件和ini文件的具体例子程序,各种情况都考虑到了。

    delphi 流读写格式化记录文件

    delphi 流读写格式化记录文件

    readtxtfile_delphi_Delphi读取CFG_

    文本文件的逐行读取,Delphi 使用LoadFromFile方法逐行读取文件内容

    delphi7+Http读写Json数据.rar

    delphi7下http传输读写json数据,调用superobject单元文件

    delphi 多线程 读取数据

    用TThread建立独立的单元,将文本文件的数据分割成前后两半部分,用两个线程来分别读取,然后在StringGrid中显示出数据。

    delphi操作excel模块,图片,表格,读写删除

    CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本文件 HTML表格(标签) 数据库 导出数据为… CSV文件 HTML文件 其他 自动过滤 单元验证 有条件的格式 合并单元 PaintCell方法:将单元...

    delphi学习_透明可移动的边框.rar

    delphi2010新手学习问题集(1),主要包含如下问题! 一:在Image控件上面一个透明可移动的边框及中心点 二:文本文件读写等基本操作 。。。

    Delphi7 编程 100 实例

    ToolBar工具栏控件的使用 动态建立主菜单选项 窗口界面的动态分隔...文本资料一样处理数据表中的信息 远程数据库登录 远程数据库的离线处理 在远程数据库中实现主从表关系 动态设置远程数据库的查询...

    Delphi 7.0编程实例五十讲-pdf版

    第十九讲 读写INI文件 第四篇系统控制 第二十讲 生成文件的快捷方式 第二十一讲 放大镜 第二十二讲 托盘程序 第二十三讲 禁止程序二次运行 第二十四讲 超级鼠标 第五篇多媒体程序设计 第二十五讲 CD播放器 第二十六...

    Delphi典型程序

    一些小程序代码,适合初学者参考,包括:canvas画布程序、文本文件读写程序、有类型文件编程、鼠标点击识别程序等等

    Delphi编程100例

    全部实例代码。目录如下: ...Delphi中的ini文件的读写 建立键盘鼠标动作记录与回放 实现指定目录下的文件查询 实现对系统的操作监视 系统级热键的实现 检测NumLock、Insert、CapsLock、ScrollLock键的状态

    Delphi7编程100例

    ToolBar工具栏控件的使用 ... Delphi中的ini文件的读写 建立键盘鼠标动作记录与回放 实现指定目录下的文件查询 实现对系统的操作监视 系统级热键的实现 检测NumLock、Insert、CapsLock、ScrollLock键的状态

    《Delphi7编程100例》代码

    ToolBar工具栏控件的使用动态建立主菜单选项窗口界面的动态分隔条动态...文本资料一样处理数据表中的信息远程数据库登录远程数据库的离线处理在远程数据库中实现主从表关系动态设置远程数据库的查询参数在远程数据库...

Global site tag (gtag.js) - Google Analytics