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文本文件读写相关推荐

  1. Unity(四十三):存档、文本文件读写

    PlayerPrefs(运行模式) using UnityEngine;namespace Example_01.Scripts {public class GameArchives : MonoBe ...

  2. 作业:文件排版(文本文件读写)

    [问题描述] 英文电影中参演人员名单一般以某种方式进行排版显示.给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号ldquo:rdquo分隔成前后两部分,但格式杂乱无章,单词(由 ...

  3. (二)C++游戏开发-本地存储-文本文件读写

    文本文件读写 简介 写(ASCLL) 读(ASCLL) 写(UTF-8) 读(UTF-8) ifstream不能读取UTF-8 其它问题 简介 文件IO属于IO的基础操作,网上也有好多资料,写法挺多的 ...

  4. R语言文本文件读写(txt/csv/xlsx)

    这篇文章主要介绍了R语言文本文件读写(txt/csv/xlsx),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本文主要介绍了R ...

  5. C++文本文件读写操作详解

    C++文本文件读写操作详解 前面章节中,已经给大家介绍了文件流对象如何调用 open() 方法打开文件,并且在读写(又称 I/O )文件操作结束后,应调用 close() 方法关闭先前打开的文件.那么 ...

  6. delphi读取服务器txt文件,在Delphi中读写TXT文件

    在Delphi中读写TXT文件 Procedure NewTxt(FileName:String); Var F : Textfile; Begin if fileExists(FileName) t ...

  7. python读取文本文档内容并存入列表内_【Python基础】文本文件读写

    作者: eavea 发表日期: 2020年04月14日 分类: 后端技术 标签: Python 阅读次数: 3,358 评论数: 0 条 [Python基础]文本文件读写 Python中常用文件读写方 ...

  8. Delphi文件读写操作常用的方法

    在进行win32开发中对文件的读写是最常用的操作之一,这编文章西西小编和大家一起来学习一下在Delphi中如何读写文件的方法. Delphi 支持三种文件类型:  文本文件.记录文件.无类型文件. 文 ...

  9. Python实训day03pm【列表生成式、非文本文件的读写与复制、文本文件读写练习】

    Python实训-15天-博客汇总表 目录 1.列表生成式 2.列表的嵌套 2.1.习题1 2.2.习题2 3.非文本文件的读写 3.1.读取文件的大小 3.2.复制文件 4.课堂练习 列表生成式 非 ...

最新文章

  1. 图灵奖得主Bengio又出新论文:用强化学习提升模型泛化性!网友崩溃:idea撞车了......
  2. Unity NGUI ScrollView 苹果式滑动
  3. 移动端整屏滑动的实现
  4. php中系统函数的特征,php 常用的系统函数
  5. 指针嵌套指针 拷贝_C++智能指针小结
  6. 《拯救人类》:很有可能改变人类历史进程的书
  7. 使用jq的toggle函数实现全选功能遇到的问题
  8. 别看微信,微博,头条用户都很多,自媒体作者也很多
  9. 最近项目参考的文章们
  10. MD5加密解密网站测试,MD5加密还安全吗?
  11. html化学式编辑器,化学反应方程式编辑器软件(ChemDraw Pro)
  12. 2022年起重机械指挥判断题及答案
  13. 2 简单使用原形工具Axure RP
  14. 安装ENVI5.3:the installation of MSVC_2010_SP1_x64_32bit has failed
  15. mysql出现表warning_查看mysql的warnings
  16. GWAS和GS的结合:Single Step GWAS的应用
  17. 强大的jqGrid!
  18. 译 MIT 为何停掉 SICP?
  19. HCIE 华为虚拟化解决方案2
  20. 2022全年度烘干机十大热门品牌销量榜单

热门文章

  1. DELL EqualLogic PS6100恢复数据原理概述
  2. 如何高效填写软件缺陷报告
  3. Volcano社区v1.6.0版本正式发布
  4. Linux基础命令---iostat--显示IO状态
  5. android状态栏一体化(沉浸式状态栏)
  6. 名科全数字纯数字网络IP楼宇对讲系统说明
  7. 解决上传文件时 nginx 413 Request Entity Too Large 错误
  8. PyTorch深度学习实战 | 猫狗分类
  9. 神经网络算法识别图像,图像识别神经网络算法
  10. IP地理位置定位系统之应用场景划分