Delphi (包括所有使用BDE的工具) 具有使用ASCII文件当数据库表Table的能力,能够转换数据值成固定长度格式或者使用逗号分隔的ASCII文件,能够使用TTable元件显示。如何存取ASCII文件依赖于一个伴随的格式定义文件。这个格式定义文件定义了分析这个ASCII文件成单条记录和字段的必要的信息。因为逗号分隔的ASCII数据文件分析更加复杂,所以本文集中介绍这类文件。
格式定义文件
ASCII数据驱动的格式定义文件包含了定义文件类型(逗号分隔或者固定长度)和定义字段。为了使程序能够知道格式定义文件,格式定义文件的文件名必须与数据文件同名,并使用SCH为扩展名。其中定义的描述如下:
File name: 被一对方括号包含,这个设置定义ASCII文件的名称。数据文件的扩展名必须为TXT。
Filetype 定义ASCII文件的结构。
FIXED 固定格式
VARYING 变化格式
Delimiter: 定义字符串的分隔符,通常为双引号
Separator 定义字段间的分隔符,通常为逗号
CharSet: 定义语言驱动程序,通常为ASCII
定义文件下部分为字段定义。ASCII文件的每一行都是一条记录。字段定义提供BDE分配虚拟字段内存空间的信息。
字段定义的描述如下:
Field: 虚拟的字段名,总是以Field加一个整形数字。如Field1。第一个Field为Field1。
Field name: 定义显示的字段名。
Field type: 定义数据的BDE类型。
名称 类型描述
CHAR 字符串
FLOAT 64位的浮点型
NUMBER 16为的整数
BOOL 逻辑型,为True或False
LONGINT 32位的整形
DATE 日期字段
TIME 时间字段
TIMESTAMP 日期+时间字段
(日期和时间格式为BDE设置中设置的格式.)
Data value length: 最大的字段长度。
Number of decimals: 适用于浮点数,定义小数点的位数
Offset: 描述起始位值
例如有一数据文件的第一字段为字符串,字段名为“Text”,最大长度为3个字符,没有小数点(字符串类型总是没有小数点),并起始偏移量为0(因为是第一字段)。所以定义如下:
Field1=Text,Char,3,00,00
下面是一个具有三个字段的格式定义文件,第一个字段为字符串,第二、三字段为日期型字段,格式定义文件如下(ASCII文件名为DATES.TXT,所以SCH文件名为DATES.SCH):
[DATES]
Filetype=VARYING
Delimiter="
Separator=,
CharSet=ascii
Field1=Text,Char,3,00,00
Field2=First Contact,Date,10,00,03
Field3=Second,Date,10,00,13
这个格式定义文件为逗号分隔的文件。注意计算偏移量和小数点的定义。
一个ASCII逗号分隔的文件的偏移量不再是ASCII文件中的真正偏移量,但是这个长度参数将定义此字段的最大长度,并且有利于内存的管理。
实际上,如果你还有不太明白的地方,可以使用Database Desktop来创建一个ASCII数据表,观察SCH文件的定义和ASCII文件的存储格式。
如果你熟练掌握ASCII数据库的应用,在实际的工作中有许多需要直接文件操作的工作可以使用数据库来实现,减轻工作量和提高程序的稳定性。