delphi 日志 class
文本文件是由若干行组成的,若干个字符串组成一行,一行的结尾由回车换行符表示。如果对文本文件进行操作,则首先应通过调用AssignFile过
程建立文件变量与外部文件的联系,并且使用Reset或ReWrite或Append方法打开。由于文本文件是以行为单位进行读写操作的,并且每一行的长
度不一定相同,所以不能计算出指定行在文件中的准确位置,因此对于文件只能顺序的读写。要对文件进行读写操作,必须相应的对文件进行以读或写的方式打开,
也就是对一个文本文件只能单独进行读或写的操作,而不能同时进行。
1、 以添加方式打开文件(Append)
通过调用函数Append可打开一个已经存在的文件以便在文件末尾添加文本。如果在文件最后的128个字节块中,存在字符〈ctrl〉+〈z〉(ASCII26),那么文件将在字节处插入,并且覆盖该字符。
Append过程的声明如下:
procedure Append(var F:text);
其
中F是一个任意文件类型的变量,并且必须同用AssignFile函数打开的外部文件相联系,如果指定的文件不存在,则会产生错误,如果指定的文件已经打
开,则先关闭再重新打开。当前文件的位置设置在文件末尾。如果分配给F的是一个空名字,则在调用Append函数后,文件变量(F)将同将同标准输出文件
建立联系。
2 、文本文件的读取和写入
文本文件通过调用过程Reset后以只读方式打开后,就可以使用Read或Readln过程来读取文件数据了。文本文件通过调用Write或Writeln过程来打开一文件后就可以使用或过程来写入数据。
(1) 用Read过程读取数据
通过调用Read过程可以从文本文件中读取或数字。其声明如下:
Procedure Read([var F:text;]v1 [,v2,…,vn,]);
其
中F是一个文件变量,v1 ,v2,…,vn用于存储读取的数据,其必须为相同的类型。当v1
,v2,…,vn定义为字符串型或字符型变量时,则Read过程将按照定义的长度读取字符。当v1
,v2,…,vn定义为整数或实数变量时,则Read过程将以空格作为分隔符,如果在数字中出现逗号、分号或其他字符将产生异常。
(2) 用Readln过程读取数据
通过调用Readln 过程可以从文本文件中读取字符串、字符或数字,直到一行结束。其声明如下:
Procedure readln([var F:text;]v1 [,v2 ,…]);
其中F是一个文件变量,v1 ,v2,…,vn用于存储读取的数据
(3) 用Write过程写入数据
通过调用Write过程可以向文件中写入数据。其声明如下:
Procedure Write([var F:text;]p1[,p2,…]);
其中F是一个文件变量,p1 ,p2,…,pn用于存储写入的数据
(4) Writeln用过程写入数据
通过调用Writeln过程可以向文件中写入一行数据,并在结尾处输入回车符。声明如下:
Procedure Writeln([var F:text;]P1[,P2,…]):
3、 文件的基本操作
对文本文件进行操作的基本函数与过程见表:
方法 说明
Procedure AssignPrn(var F:text); 建立文本文件同打印机的联系
Function Eoln(var F:text):Boolean; 检测文件指针是否指向行尾
Procedure Flush(var F:text); 清空以输出方式(ReWite或Append)打开的文件缓冲区,以确保写入的文件字符都被写入外部文件
Function SeekEof(var F:text): boolean; 返回文件尾状态
Function SeekEoln(var F:text):boolean; 返回文件行尾状态
Procedure SetTextBuf(var F :text;var buf [;size:integer]); 设置文件缓冲区