Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

路漫漫,长修远,我们不能没有钱
随笔 - 172, 文章 - 0, 评论 - 257, 引用 - 0
数据加载中……

今天突然想写一个关于日志文件的class,用pascal,以前用java几简单,pascal的这块反而没有接触过

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]);   设置文件缓冲区


posted on 2004-11-08 21:27 Khan 阅读(1294) 评论(1)  编辑 收藏 引用 所属分类: Delphi

评论

# re: 今天突然想写一个关于日志文件的class,用pascal,以前用java几简单,pascal的这块反而没有接触过  回复  更多评论   

源码呢???
2007-09-14 07:50 | han

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理