作者: 童爱红、谭明金
软件的开发,必须要保证与机器环境的无关性,这是一个在开发和调试过程中都必须注意的
问题。本文以Visual Basic程序设计语言为例,详细探讨了与机器环境无关的应用
程序开发与测试的方法。
利用Visual Basic开发应用程序时,常常会遇到这样的问题:生成的可执行文件在开发的机器上能够运行,复制到另一台机器上则无法运行,这种现象称之为应用程序与机器环境相关。造成这种现象主要有两个方面的原因:一是
程序在运行过程中调用了一些文件,如数据库文件、文本文件和
图片文件等,由于路径使用不当而无法定位;二是Visual Basic编译成的.EXE文件并不是实际意义上的EXE文件,Visual Basic系统中的标准控件和开发过程中用到的第三方控件,都没有包含在内。此现象可由图1形象地加以说明。
因此要解决用VB开发的应用程序与机器环境的相关性,必须从两个方面入手,一是保证应用程序能调用到所用文件,二是应用
程序发布时同时发布所有用到的控件和DLL文件。
开发与路径无关的应用
程序 无论应用程序论开发得多么好,是否成功还取决于其能否在任何机器的任何目录下都能运行,这就要求应用程序要自成一体,不但要包含所有用到的文件,而且还应与路径无关。实现应用
程序与路径无关可用两种方法:一是利用VB.APP对象的PATH属性;二是把调用文件放在光盘上,直接调用。
1.利用VB.APP.PATH实现与路径无关
该方法的主要思路是在调用文件时利用相对路径,由于VB中不支持与DOS类似的相对路径,如调用当前目录下的“hh1.bmp”文件,写成“hh1.bmp” 和 “.hh1.bmp“将会出错。为解决该问题,VB提供一个VB.APP对象,该对象有个名为PATH的属性,它记下了执行文件所在的路径,可在运行时访问。
用该方法创建与路径无关应用
程序的要点如下:
(1)为应用
程序(项目)创建一个目录,用以存放建立的窗体或其它文件。
(2)把应用
程序所调用的文件放在该目录下或者放在该目录的子目录下。子目录最好按照引用文件的类型进行建立,如存放
图片的子目录名为PIC,存放表的的目录为DBF等。
(3)除包含在可执行文件中的文件(如在设计时图片框加载的
图片)外的其它文件,调用一律采用相对路径而禁用绝对路径。
这样在复制应用程序的时候,只要把应用程序目录下的所有文件(包括子目录)复制到任意目录下,应用
程序都不会发生因找不到文件而产生的错误。
以下是一个
程序实例,该实例显示一系列的角度逐渐变化的地球图片,从而形成地球转动动画。用VB设计一个窗体,窗体上放置一个图片框,名为Image1(Strech=.T.),给窗体加一个定时器控件,控件名为Timer1(Interval=25,enabled=.t.),该项目存放在A:exam下,
图片文件存放在A:EXAM1PIC下面。
使用绝对路径,程序代码如下:
Dim t1 As Integer
Private Sub Form_Load()
t1 = 0 ‘t1 记录时钟事件发生的次数
End Sub
Private Sub Timer1_Timer()
t1 = t1 + 1
If t1 < 100 Then ‘
图片共显示100幅
current = t1 Mod 8
‘current表示当前应该显示哪张
图片 FileName$ = "A:exampicearth" && current && ".jpg" ‘
图片文件名(绝对路径)
Image1.Picture = LoadPicture(FileName$) ‘显示
图片 Else
End ‘程序结束
End If
End Sub
该程序使用绝对路径调用外部文件(earth0.jpg?earth7.jpg),当把EXAM目录全部内容拷贝到其它机器上,抽出软盘后,运行程序将发生找不到文件错误。若采用VB.APP.PATH属性,把形成
图片文件名的语句改写如下:
FileName$ = VB.App.Path && &quo