Delphi继承了Object Pascal的文件管理功能,并有很大的发展,其中最主要的是提供了用于文件管理的标准控件,同时也提供了更多的文件管理函数。利用Delphi的强大功能,开发一个自己的文件管理系统就成为很容易的事。 本章首先介绍Delphi文件管理的基本概念和标准过程/函数,并提供了一个记录文件的应用实例,这是从我们实际课题开发中提取出来的。而后介绍Delphi提供的文件控件的使用方法。最后提供的一个综合例程MDI文件管理器则是对Delphi文件管理功能的综合应用。 1 文件类型和标准过程 Delphi同Object Pascal一样支持三种文件类型,即:文本文件、记录文件、无类型文件。 1.1文本文件 文本文件类型的变量用如下方法声明: var TextFileVar: Text ; 文本文件是以行为单位进行读、写操作的。由于每一行长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。而且文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。 1.1.1 文本文件的打开、关闭 文本文件的打开需要两个步骤:(1). 文件变量与文件名关联;(2). 初始化读写。 联文件变量与文件名调用AssignFile标准过程: AssignFile ( TextFileVar , FileName ) ; FileName 既可以是全路径名,也可以仅是文件名。对于后者系统将在当前目录下查找。 AssignFile是Delphi新提供的一个函数,其功能等价于Object Pascal中的Assign。而Assign在Delphi中更多地被用作一个方法名。 初始化读写有三种方式: 1. Reset : 为读打开文件并把文件指针移动到文件首; 2. Rewrite : 为写创建一个新文件; 3. Append : 为写打开存在的文件并把文件指针定位在文件尾。 当使用Reset或Append过程而文件不存在时将会引发一个I/O异常。有关I/O异常的处理请参看本章例程和第十二章中的介绍。 文件的关闭很简单,只须调用CloseFile过程即可。 虽然Delphi应用程序在退出时会自动关闭所有打开的文件,但自己动手关闭文件可以确保释放文件句柄,并使程序的可移植性增强。 为保持兼容,Delphi也允许用户用Assign建立关联,Close关闭文件。 1.1.2 文本文件的读写 从文本文件中读取信息用Read、Readln两个标准过程。 当读入数值时,Read、Readln假定数值是用一个或多个空格分开的,而不是逗号、分号或其它字符。对如下一条语句: Read ( TextFileVar , Num1 , Num2 , Num3 ) ; 如果文件中的数值是: 100 200 300 则能够成功读入,而若文件中的数值是 100 200, 300 则Read读入“200,”并试图把它转化成一个数值时会引发一个异常。 当读入字符是字符串时,Read、Readln过程总是读取尽可能多的字符填充到字符串变量中或一直读到行结束符为止。因此从文本文件中读取格式化的字符串数据,必须声明与其长度相匹配的字符串变量。如果要从文件中读取单词,必须先把文件中的每一行读入字符串,然后再从字符串中逐个分析出单词。或者一次只从文本文件中读入一个字符并测试每个字符后是否是单词断开处。 格式化字符串之间的分隔符应读入到一个临时变量中,而字符串与数值、数值与数值间的分隔符读入时会自动识别剔除。对如下一行数据: Mon 12:10 40 50 定义 var Day: string[3] ; Time: string[5] ; Num1, Num2: Integer ; 则须用如下的read 语句读入: read ( TextFileVar , Day , c , Time , Num1 , Num2 ) ; C为一个临时字符变量。
|