`

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控件的情况下实现这一功能,以提高程序的效率和灵活性。 首先,我们需要引入`System....

    delphi 文件读写

    通过以上内容,你应该对Delphi中的文本文件读写有了基本的理解。继续学习Delphi的高级特性,如内存映射文件、异步I/O等,可以帮助你更高效地处理文件操作。记得实践是检验理论的最好方式,尝试编写自己的文件读写...

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

    总的来说,Delphi中的文本文件读写操作并不复杂,通过TStreamReader和TStreamWriter类可以方便地实现。只要理解基本的文件操作概念和异常处理,你就能轻松应对大部分文件处理需求。在学习过程中,不断实践和调试代码...

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

    本文将深入探讨如何使用Delphi通过Memo组件来实现文本文件和ini文件的读写操作。 首先,我们要了解Delphi中的Memo组件。Memo组件在界面上通常表现为一个多行文本框,用于显示或编辑大量文本。它在读写文本文件时...

    Delphi中读写TXT文件

    ### Delphi中读写TXT文件的关键知识...这些示例代码为初学者提供了很好的起点,展示了如何在Delphi中实现基本的TXT文件读写功能。通过这些基础操作的学习和实践,可以为进一步探索更复杂的数据处理任务奠定坚实的基础。

    delphi 操作文本文件

    本文将深入探讨如何使用Delphi来实现对文本文件的读写操作。 首先,Delphi提供了TFile和TFileStream类,它们是操作系统I/O功能的封装,可用于读写文件。对于简单的文本文件操作,我们可以使用TFile类的OpenRead和...

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

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

    Delphi INI文件读写操作

    在Delphi中处理INI文件是一项常见的任务,INI文件是简单的文本文件,常用于存储配置信息。本文将深入探讨Delphi中对INI文件进行读写操作的相关知识点。 1. **INI文件格式** INI文件由一系列键值对组成,每行包含一...

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

    下面将详细介绍如何在Delphi中通过Memo组件来读写文本文件,并讲解如何操作ini文件。 1. **读写文本文件(通过Memo)** 在Delphi中,可以使用TFile和TStream类来读写文件,但这里我们将重点讨论通过TMemo组件的...

    delphi读写取流记录文件TFileStream

    在Delphi编程环境中,TFileStream是一个非常...总之,Delphi的TFileStream类是处理文件流的强大工具,适用于各种文件操作,包括读写、追加和合并。通过熟练掌握其用法,开发者可以高效地实现复杂的数据存储和传输任务。

    Delphi文件读写

    Delphi 提供了多种文件读写方式,包括文本文件、类型文件、流文件等。 在 Delphi 中,文件读写主要通过文件变量(File)和流变量(Stream)来实现。文件变量可以认为是一个指向文件的指针,而流变量则是一种特殊的...

    delphi 读写文本文件.mht

    delphi 读写文本文件.mht

    delphi读写文件,小例子,用着非常爽

    以上就是Delphi中基本的文件读写操作,这两个小实例展示了如何进行文本文件的读写。在实际应用中,你可能需要处理更复杂的数据类型,或者使用其他流类,如TStringStream、TMemoryStream等,以适应不同的需求。不过,...

    delphi读写XML文件

    首先,你需要导入System.XML读写XML文件所需的基本库。在Delphi中,可以使用TXMLDocument类来处理XML文档。以下是读取XML文件的基本步骤: 1. 创建TXMLDocument对象: ```delphi var XMLDoc: TXMLDocument; ...

    使用Delphi内置函数读写INI文件 读写INI文件

    这些配置文件通常是以.INI格式存在的文本文件,用于存储程序的各种设置信息。Delphi提供了丰富的API来方便地读取和修改这些文件,而无需直接调用Windows API函数,这大大简化了开发过程。 #### 一、概述 Delphi...

    delphi文本拷贝

    本项目聚焦于“Delphi文本拷贝”,即利用Delphi开发的工具或代码片段来实现TXT文本文件的复制功能。对于初学者或者希望扩展其Delphi技能的开发者来说,了解如何操作文件系统并实现文本文件的拷贝是非常基础且重要的...

    文本编辑器delphi

    接下来,要实现文件的打开和保存,你需要使用`TOpenDialog`和`TSaveDialog`组件让用户选择文件,并使用内置的`TextFile`流类来读写文本文件。确保处理各种文本编码,如ASCII、UTF-8等,以确保兼容性。 在设计用户...

    TXT文本文件的Delphi操作例子..rar

    总之,Delphi为开发者提供了强大的工具和丰富的API来处理TXT文本文件,无论是简单的读写操作,还是复杂的文本处理任务,都能游刃有余。通过实践和学习这些示例,你将能更好地掌握Delphi在文本处理方面的功能。

    Delphi文件操作全攻略:深入文件读写与处理的艺术

    ### Delphi 文件操作全攻略:深入文件读写与处理的艺术 #### 一、Delphi简介与特点 Delphi 是一种高性能的集成开发环境 (IDE) 和面向对象的编程语言,以其出色的开发能力和广泛的适用性而著称。它最初由 Borland ...

    delphi关于文件操作

    - Delphi还提供了`TTextReader`和`TTextWriter`用于文本文件的读写,以及`TIniFile`和`TMemorystream`等更具体的文件操作类。 - 对于更复杂的文件操作,如追加、替换、查找、替换文件内容等,可能需要结合字符串...

Global site tag (gtag.js) - Google Analytics