由于 Visual FoxPro 系统的数学运算能力较差,在实际应用中往往要借助其他语言进行较
为复杂的数学运算。另外,对于某些有特殊需求的应用系统,仅用 Visual FoxPro 语言不能满 足其编程的需要。为此,Visual FoxPro 系统提供了与其他语言连接的接口,主要有以下两种:
l 提供数据表文件与其他语言的数据文件交换数据。
l 调用用其他语言编写的可执行程序或库函数。
通过接口可以将数据表的格式数据(包括存储在备注型字段和通用型字段中的数据)转 换为可供其他语言直接使用的标准数据文件。 反之, 其他语言的标准数据文件也可以追加到数 据表中。另外,Visual FoxPro 系统还提供有关文件操作函数,在必要时可调用低级文件函数直 接对数据文件进行数据的输入/输出处理。
5.10.1 数据表文件转换为其他系统的数据文件
将.DBF 文件和.FPT 文件转换为标准的数据文件,命令格式如下:
(1)COPY TO 文件名 [范围] [FIELDS 字段名列表] [FOR 条件表达式]
[WHILE 条件表达式] [[WITH] CDX]/[[WITH] PRODUCTION]
[NOOPTIMIZE] [[TYPE] [SDF/WK3/XLS
/DELIMITED [WITH 分隔符/WITH BLANK/WITH TAB]]]
命令的功能:将当前工作区中打开的数据表中的指定字段(备注型和通用型字段除外)、 符合条件的数据复制成一个指定类型和分隔符的文件。
命令中“文件名” 、 “范围” 、FIELDS、FOR 和 WHILE 各部分的功能前面已经讲过,不再 重复。这里将前面没有遇到的子句的功能讲述如下:
l WITH CDX 和 WITH PRODUCTION 子句用于生成数据表文件,生成文本文件时不 能使用 WITH 子句。
l NOOPTIMIZE 子句表示不使用 Rushmore 技术优化 FOR 子句的执行。
l TYPE 子句用于指定输出数据文件的格式。用 SDF 生成.TXT 系统数据文件;用 WK3 生成 Lotus 123 3.X 版电子表格文件;用 XLS 生成 Excel 电子表格文件。
l DELIMITED 子句用于指定字段间的分隔符,可以是指定的符号、空格或制表符。
(2)COPY MEMO 备注型字段名 TO 文件名 [ADDITIVE]
命令的功能:将当前工作区中打开的数据表中指定的“备注型”字段内容复制到一个指 定的数据文件中。ADDITIVE 子句的作用是将复制的数据放到文件的尾部,不用此子句,表 示要将文件中的原内容用新数据覆盖。
5.10.2 其他系统的数据文件转换为数据表文件
将其他系统的数据文件转换为数据表文件的命令格式如下:
(1)APPEND FROM 文件名 /? [FIELDS 字段名列表] [FOR 条件表达式]
[[TYPE] [SDF/WK3/XLS
/DELIMITED [WITH 分隔符/WITH BLANK/WITH TAB]]]
命令的功能:该命令与 COPY TO 命令的功能相反,是将数据表或其他系统的数据文件 追加到当前打开的数据表文件中,成为.DBF 文件格式的数据。其中,FROM 子句用于指定追 加数据的源数据文件; “?”将在屏幕上出现“打开”文件对话框,从中选择用于追加数据的数 据文件。其他子句的功能与 COPY TO 命令中相同子句的功能一样,这里不再重复。
注意:使用 APPEND FROM 命令需要事先打开或创建一个接收数据的数据表文件,并且 追加数据只能在当前工作区内进行, 不能指定其他工作区或使用表文件的别名向在其他工作区 中打开的数据表追加数据。
(2)APPEND MEMO 备注型字段名 FROM 文件名 [OVERWRITE]
命令的功能:该命令与 COPY MEMO TO 命令的功能相反,它将存储在由文件名指定的 数据文件中的数据写入到当前工作区中已经打开的数据表的备注型字段中。 写入的备注型字段 名由命令中的“备注型字段名”指定。OVERWRITE 子句在缺省状态下表示写入的数据将追 加到指定的“备注型字段”中已有数据的后面,使用 OVERWRITE 子句表示将其原有的数据 覆盖。
(1)FCHSIZE()函数。
格式:FCHSIZE(数值表达式 1, 数值表达式 2 )
功能:改变已打开数据文件的大小。返回值<0,表示改变失败。
(2)FCLOSE()函数。
格式:FCLOSE(数值表达式)
功能:关闭用文件函数打开的文件或通信端口。返回值为“.T.”表示关闭成功。
(3)FCREATE()函数。
格式:FCREATE(字符表达式, 数值表达式)
功能:创建并打开数据文件。返回值<0,表示创建失败。
(4)FEOF()函数。
格式:FEOF(数值表达式)
功能:测试文件指针是否在文件尾。返回值为“.T.”表示指针在文件尾。
(5)FERROR()函数。
格式:FERROR()
功能:测试文件操作错误,返回错误号。返回值为 0,表示无错误。
(6)FFLUSH()函数。
格式:FFLUSH(数值表达式)
功能:将缓冲区中的数据写入文件。返回值为“.T.”表示写入成功。
(7)FGETS()函数。
格式:FGETS(数值表达式 1, 数值表达式 2)
功能:从文件或端口读入数据,直到遇到回车符为止。
(8)FOPEN()函数。
格式:FOPEN(字符表达式 [, 数值表达式] )
功能:打开数据文件或通信端口。返回值<0,表示打开失败。
(9)FPUTS()函数。
格式:FPUTS(数值表达式 1, 字符表达式 [, 数值表达式 2] )
功能:返回写入数据文件或通信端口的字节数。返回值为 0,表示写入失败。
(10)FREAD()函数。
格式:FREAD(数值表达式 1, 数值表达式 2 ) 功能:从文件或通信端口读取指定的数据。
(11)FSEEK()函数。
格式:FSEEK(数值表达式 1, 数值表达式 2 [, 数值表达式 3] ) 功能:在数据文件中移动指针,返回指针移动的字节数。
(12)FWRITE()函数。
格式:FWRITE(数值表达式 1, 字符表达式 [, 数值表达式 2] ) 功能:将数据写入数据文件。返回值为 0,表示写入失败。