如何提高VFP应用软件的路径适应性
浙江省奉化市供电局 张明达 2000-12-25 15:42:51
摘要 本文从VFP语言的编程特点出发,介绍了提高VFP应用程序路径适应性的具体实现方法。
关键字 VFP 路径适应性
日常,在使用各种商品化的应用软件时,发现部分软件,可以将它安装在硬盘的任何盘的任何目录中;而有的软件,则只能安装在设计者事先规定的特定盘和特定路径中。假如将它放在了另外的盘号和路径,就会出现"XXXX数据库找不到"等等之类错误,从而中断软件的运行。本文从VFP语言的编程特点出发,介绍了提高VFP应用程序路径适应性的具体实现方法。 1. 在VFP应用软件的项目中,有一个主文件,它是整个应用程序的运行起始点。在主文件的开头处,插入以下语句: A.将该软件的目录(安装后目录),设置为当前目录 SET DEFAULT TO SYS(5)+SYS(2003)
B.从.INI文件或路径数据表中读取用户指定的该软件下的子目录名(.INI文件或路径数据表的内容,待软件安装后,根据软件下的子目录名,由用户输入),例如B.1。若软件设计时确定了子目录名,则执行B.2的语句。 B.1 这里以"路径数据表"为例,说明读取路径的过程。 USE PGPATH MPATH=‘‘ LOCA FOR PH#‘ ‘ &&搜索字段PH(路径)不为空的记录 DO WHILE .NOT.EOF() MPATH=MPATH+TRIM(PH)+‘,‘ &&连加成搜索路径 SKIP ENDD MPATH=LEFT(MPATH,1,LEN(MPATH)-1)
B.1 若子目录名固定,则将各子目录名赋给MPATH,例: 两个子目录名为 DATA1,DATA2,DATA3则: MPATH=‘DATA1,DATA2,DATA3‘
C.设置搜索路径 SET PATH &MPATH. D.打开各数据库 OPEN DATABASE 数据库1 OPEN DATABASE 数据库2
2. 在主程序文件以外的程序中,作如下处理: 在这些程序中,以上设定的搜索路径仅由项目内的自由表使用,打开自由表时,不要使用路径。对于只包含单个数据库的项目,数据库中的表、视图等可以通过以下语句来使用,无须再使用路径。 OPEN DATABASE [数据库名] USE [表名] 而对于包含多个数据库的项目,在使用其内的表、视图等对象时,采用: USE 数据库名!表名
3. 若要求应用程序在用户指定的目录中新建文件,则可以通过以下VFP函数来实现: =PUTFILE([cCustomText] [, cFileName] [, cFileExtensions]) 运行此函数,出现一个对话框,让用户选择文件(cFileName).( cFileExtensions)的存放目录。
4. 对VFP数据环境的分析。 报表、表单等设计时,数据环境内各个对象(如表、自由表、视图等)的CursorSource属性中包含自由表的绝对路径,以及Database属性中包含数据库的绝对路径。并且这二个属性都是只读的,无法修改。然而,在编程实践中发现,这二个属性值在项目连编时,都转化为相对于项目文件所在位置的相对路径。从而为设计路径通用性程序成为可能。这一点可通过查看使用了数据环境的各类文件(如:表单的 *、SCT,报表的 *、FRT)来证明,因此,在设计数据环境时,对数据对象,无须考虑路径的相对性。而且,数据环境中的数据库也是按SET PATH设定的顺序查找的。 5. 项目文件中的数据库 首先,要将它们标为"排除"。笔者,在项目"连编"前,有意改变它的数据库目 录,使"项目连编"时找不到数据库,当出现"找不到数据库"等错误信息时,选择 "忽 略",连编后的应用程序,照样可使用。因此,连编后的应用程序中,不固定项目内(已 标为"排除"的)数据库的路径,也不必考虑路径问题。 6.最后要注意,在打开项目的环境下,调试运行主文件(整个应用程序的运行起始点) 时要将 SET DEFAULT TO SYS(5)+SYS(2003) 改为 SET DEFAULT TO [(设计环境中)连编后的应用程序存放的绝对路径] 因为设计项目时 SYS(5)+SYS(2003)得出的不一定是[连编后的应用程序存放的 绝对路径],如:设计项目时是先运行VFP系统,再打开项目文件,则得出的路径是 VFP系统的安装目录。 以上所有的思想方法,本人已在实际编程中,得到充分的应用,效果很好。并且,对使用其它数据库语言开发应用软件也有一定的借鉴作用。 E-mail:zmdc@mail.nbptt.zj.cn
|