《数据库原理与应用第14章.ppt》由会员分享,可在线阅读,更多相关《数据库原理与应用第14章.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第14章章 FoxPro与其它语言的联系与其它语言的联系第第14章章 FoxPro与其它语言与其它语言 的联系的联系14.1 FoxPro与其它语言交换数据的方法与其它语言交换数据的方法 14.2 库文件与文本文件的数据交换库文件与文本文件的数据交换14.3 直接调用其它高级语言的命令直接调用其它高级语言的命令 RUN14.4 调用汇编语言子程序调用汇编语言子程序第第14章章 FoxPro与其它语言的联系与其它语言的联系14.1 FoxPro与其它语言交换数据的方法与其它语言交换数据的方法1.交换数据的基本方法交换数据的基本方法一般,FoxPro与其它语言程序是通过文本文件来相互交换数据的。
2、但是,只有具有SDF格式(系统数据格式)或DELIMTED格式(用户定义分隔符格式)的文本文件才能完成这个任务,图14CD*21描绘了这种交换数据的方法。第第14章章 FoxPro与其它语言的联系与其它语言的联系图141FoxPro与其它语言程序交换数据法第第14章章 FoxPro与其它语言的联系与其它语言的联系FoxPro可以利用自己的命令把库文件的数据传送给具有SDF格式或DELIMITED格式的文本文件;也可以用自己的命令,从具有SDF格式或DILIMITED格式的文本文件中读入数据并构成库文件的记录。但这两种方法不涉及库文件的记忆型字段。任何一种其它语言程序,都可利用自己的命令,从具有
3、SDF格式或DELIMITED格式的文本文件中为自己的变量读入数据;或用自己的命令,把自己程序运行的结果数据传送给具有SDF格式或DELIMITED格式的文本文件。第第14章章 FoxPro与其它语言的联系与其它语言的联系2.SDF格式文本文件格式文本文件SDF格式文本文件称为系统数据格式文本文件,它在格式上与库文件有着很多相似之处。首先,每一个字段的宽度是固定的,等于原库文件中该字段的定义宽度,因此各记录的长度也是相同的。在SDF格式文本文件中,原库文件的字符型字段和数字型字段数据将原样存储,即字符型数据左对齐存放,右边不足部分填以空格;数字型数据右对齐存放,左边不足部分填以空格。第第14章
4、章 FoxPro与其它语言的联系与其它语言的联系3.DELIMITED格式文本文件格式文本文件DELIMITED格式文本文件又称为用户定义分隔符格式文本文件或紧凑格式文本文件。它和SDF格式的差别在于:同一字段中,各字段值的宽度不再固定为原字段定义宽度,而是等于字段值的实际宽度。也即,原字符型数据的尾部空格和原数字型数据的头部空格都被删去。在同一记录中,各数据项之间用分隔符隔开。(表142的分隔符为逗号,表143的分隔符为空格。)原字符型数据还有单独的标界符(表142中为双引号;表143是特殊情况,没有单独标界符)定界。第第14章章 FoxPro与其它语言的联系与其它语言的联系14.2 库文件
5、与文本文件的数据交换库文件与文本文件的数据交换FoxPro可以用自己的命令把库文件数据传送给具有SDF格式或DELIMITED格式的文本文件,也可以用自己的命令从相应的SDF格式或DELIMITED格式文本文件提取数据给库文件(组成新的记录)。1.库文件数据传送给文本文件库文件数据传送给文本文件(1)生成SDF格式文本文件。在FoxPro状态下,把当前库文件内容传送给SDF格式文本文件的命令为:第第14章章 FoxPro与其它语言的联系与其它语言的联系COPY TO 文件名 FOR条件WHILE条件范围FIELDS字段名表TYPESDF功能:此命令把当前库文件中指定范围内符合条件记录的指定字段
6、,按SDF格式复制到命令中规定的文本文件中。命令中若无范围项,则范围为ALL;若无FIELDS项,则复制全部字段(除记忆型);若无条件项,则复制范围内全部记录。文件名默认扩展名为.TXT。TYPE项可省略。第第14章章 FoxPro与其它语言的联系与其它语言的联系 例例1USE职工COPYTOZGSSDFTYPEZGS.TXT输出SDF格式文本文件ZGS.TXT,结果见表141。(2)生成DELIMITED格式文本文件命令格式:COPYTO文本文件名FOR条件WHILE条件 范 围 FIELDS 字 段 名 清 单 TYPEDELIMITEDWITH分界符第第14章章 FoxPro与其它语言的
7、联系与其它语言的联系功能:此命令把当前库文件中指定范围内符合条件记录的指定字段,按DELIMITED格式复制到命令中规定的文本文件中。命令中若无范围项,则范围为ALL;若无FIELDS项,则复制全部字段(除记忆型字段);若无条件项,则复制范围内全部记录。命令中文本文件的默认扩展名为.TXT;若无分界符项,则原字符型字段数据都用双引号括起;若用分界符项,则原字符型字段数据都用分界符括起;同一记录的各字段值之间一般都用逗号分隔,但当分界符是BLANK时,同一记录的各字段值之间将用空格分隔。TYPE项可省略。第第14章章 FoxPro与其它语言的联系与其它语言的联系 例例2USE职工COPYTOZG
8、DSDELIMITEDTYPEZGDS.TXT输出结果见表142。例例3USE职工COPYTOZGDBDELIMITEDWITHBLANKTYPEZGDB.TXT输出结果见表143。自己定义分界符后,字符串中就可以包含逗号。当然,所有分界符必须不在字符数据中出现。第第14章章 FoxPro与其它语言的联系与其它语言的联系2.文本文件内容传送给库文件文本文件内容传送给库文件(1)SDF格式文本文件内容传送给库文件。在FoxPro状态下,把SDF格式文本文件内容追加入当前库文件的命令为:APPENDFROM文件名FIELDS字段名清单FOR条件TYPESDF功能:把指定SDF格式文本文件内容中符合
9、条件者,追加入当前库文件。在无条件时,全部追加;否则,只追加符合条件者。在无FIELDS项时,为所有字段追加数据;否则,只为指定字段追加数据。第第14章章 FoxPro与其它语言的联系与其它语言的联系步骤:以当前库文件的字段宽度为准,逐个字段地为一条记录的指定字段读入数据。若在SDF格式文本文件中遇到了回车换行符,则在库文件中开始追加新的一条记录(在刚才追加的那条记录中,可能最后还有指定字段未输入数据);若库文件中一条记录的所有指定字段都已顺次追加完数据,则在SDF格式文本文件中跳到下面一个回车换行符后,再开始为库文件追加新的一条记录(SDF文件中,刚才被读的那一行的最后一些数据,可能未用到)
10、;若在库文件中遇到一个记忆型字段,系统也认为一条记录已追加完毕。第第14章章 FoxPro与其它语言的联系与其它语言的联系第第14章章 FoxPro与其它语言的联系与其它语言的联系第第14章章 FoxPro与其它语言的联系与其它语言的联系(2)DELIMITED格式文本文件内容传送给库文件。在FoxPro状态下,追加DELIMITED格式文件内容到当前库文件的命令为:APPENDFROM文件名FIELDS字段名清单FOR条件TYPEDELIMITEDWITH分界符功能:此命令把命令中给出的DELIMITED格式文本文件内容中的符合条件者,追加入当前库文件。命令中文件名的默认扩展名为.TXT。在
11、无FIELDS项时,为所有字段追加数据。第第14章章 FoxPro与其它语言的联系与其它语言的联系步骤:顺次为追加记录的指定字段读入数据。库文件的一个记录追加完毕,则在文本文件中跳到下一个回车换行符后,开始为新记录追加数据;若在文本文件中遇到一个回车换行符,则结束正在追加的记录,再开始追加一个新记录;若在库文件中遇到一个记忆型字段,则结束追加本记录,在文本文件中跳到一个回车换行符后,开始追加一个新记录,直至结束。第第14章章 FoxPro与其它语言的联系与其它语言的联系第第14章章 FoxPro与其它语言的联系与其它语言的联系第第14章章 FoxPro与其它语言的联系与其它语言的联系第第14章
12、章 FoxPro与其它语言的联系与其它语言的联系由上可知,SDF格式的文本文件只能被追加SDF格式的APPEND命令使用,DELIMITED格式文本文件也只能被追加DELIMITED格式的APPEND命令使用。而且,一定分界符的DELIMITED格式文件也只能被规定了同样分界符的APPEND命令使用。因此,是选择第一条SDF命令;还是选择第二条DELIMITED命令;如果选DELIMITED命令到底选择什么分界符;这些都完全取决于被读文本文件。第第14章章 FoxPro与其它语言的联系与其它语言的联系14.3 直接调用其它高级语言直接调用其它高级语言的命令的命令RUN1.RUN命令命令有两种命
13、令格式:RUN /N K 外 部 可 执 行 文 件 名/MSDOS命令!/NK外部可执行文件名/MSDOS命令在MSDOS支持下使用RUN命令时,操作系统文件COMMAND.COM必须在当前目录中或在能被MSDOSCOMSPEC找到的位置(见MSDOS手册中有关SETCOMSPEC内容)。第第14章章 FoxPro与其它语言的联系与其它语言的联系在FoxPro中,有一个名为FoxSwap的内存管理实用程序,它为RUN命令提供了更多的内存空间。选择项/N或/NK指定该RUN命令所用内存空间量。N为一个数值,单位为KB。当N=0时,该RUN命令将得到最大的内存空间。当N0时,则:缓冲区内容写进磁
14、盘;或内存中有N(KB)可用空间,则执行该RUN命令;否则,执行FoxSwap。第第14章章 FoxPro与其它语言的联系与其它语言的联系例例下列命令提供120KB内存空间,执行外部文本编辑程序MYEDITOR。!/120MYEDITOR注意,不要规定超过需要的内存空间,FoxSwap要花费额外的时间。第第14章章 FoxPro与其它语言的联系与其它语言的联系14.4 调用汇编语言子程序调用汇编语言子程序FoxPro可直接调用汇编语言程序,主要使用三条命令。1.LOAD命令命令命 令 格 式:LOAD 文 件 名 SAVENOSAVE本命令把一个二进制程序装入内存,供FoxPro的CALL命令
15、调用。该文件名的默认扩展名为.BIN。若文件名与已装入内容的某文件同名,即使扩展名不同,也将覆盖前已装入内存的文件。在内存中,最多可同时存在16个64KB的这类文件。第第14章章 FoxPro与其它语言的联系与其它语言的联系在LOAD命令和CALL命令中,可使用选择项SAVE及NOSAVE(NOSAVE是默认值)。在CALL中的SAVE、NOSAVE优先于LOAD中的SAVE、NOSAVE。选择SAVE后,一从二进制文件返回,FoxPro将把显示器RAM的内容复制到FoxPro桌面或主窗口(假定二进制文件直接写进显示器RAM)。一般地,不要选用SAVE项,因为它将花费一些额外时间。在建立二进制
16、代码文件时,应注意:程序的第一条可执行指令必须放在偏移量为0处;不允许程序使用超出其本身大小的存储区域;程序不得改变在DS:BX中作为自变量的内存变量的长度;返回FoxPro前,应恢复CS和SS寄存器;应以远程返回指令返回FoxPro,否则只能被RUN命令调用。(不能用LOAD和CALL命令来调用。)第第14章章 FoxPro与其它语言的联系与其它语言的联系建立汇编文件的步骤如下:用MASM文件名对源文件进行汇编,产生一个目标文件;用LINK文件名连接目标文件,生成一个可执行文件;用EXE2BIN文件名产生二进制文件。当使用字符型变量时,不能改变其值长度;当从一个调用到下一个调用而存储字符串地
17、址时,也应重新设置已经用过而又准备存入新内容的字符串地址。第第14章章 FoxPro与其它语言的联系与其它语言的联系2.CALL命令命令格式:CALL文件名WITH字符表达式/内存变量SAVE/NOSAVE功能:执行由LOAD命令装入内存的二进制代码文件,文件名不用扩展名。WITH选择项用于向调用的二进制程序传递参数。CALL命令使代码段(CS)指向被调用模块的起始处,DS和BX寄存器组指向由WITH传递参数的第一字节。若命令中未选用WITH项,则BX内容为0。SAVE和NOSAVE选择项的使用见LOAD命令。第第14章章 FoxPro与其它语言的联系与其它语言的联系3.RELEASE MODULE命令命令格式:RELEASEMODULE二进制文件名功能:清除内存中该二进制文件,以便用户装入其它二进制文件。