t;picearth" && current && ".jpg" ‘形成显示
图片的文件名
这样无论把exam目录完全复制到任何机器,程序均能运行。
2.从光盘调用文件实现与路径无关
把应用程序要调用文件放在光盘指定目录下,应用程序发行时和该光盘的拷贝一同发行。程序运行时,直接从光盘指定目录调用文件,故不会发生因找不到文件而出现的错误。由于不同机器上的光盘盘符不同,因此在开发时不能直接引用光盘的盘符,应用程序必须要先取得光盘盘符,然后再生成需要调用文件的完整文件名。
取得光驱盘符可以使用API函数,也可以通过以下程序段来检测到光驱盘符:
Private Declare Function GetDriveType Lib "kernel32"
Alias "GetDriveTypeA" (ByVal nDrive As String) As Long ‘声明 API函数
Dim drive As String
Dim a As Long
For i = 0 To 25
drive = Chr(65 + i) && ":" ‘形成盘符符号
a = GetDriveType(drive)
‘得到盘符常数
If a = 5 Then
Exit For
‘如果是光驱则退出
End If
Next
以上程序段放在需要检测光驱的地方,通常放在Form.load事件中,光驱盘符存放在Drive变量中。检测到光驱后,则可直接调用光盘上的文件,如上例中,若PIC目录下的图片文件存放在光盘上,形成文件名的语句则可以用以下语句代替:
FileName$ = Drive && "exampicearth" && current && ".jpg" ‘形成显示图片的文件名
这样,我们就实现了从光盘调用文件与路径无关了。
包装应用程序实现与系统无关
解决了与文件路径相关的问题后,生成的可执行文件在其它没有安装Visual Basic的机器中,依然无法执行。原因之一是Visual Basic具有21个标准控件,这些控件都保存在动态链接库中(扩展名为DLL),Visual Basic的可执行程序中并没有包含;原因之二是开发的应用程序可能包含了第三方控件,Visual Basic的可执行程序中也不包含它们。因此在其它机器上执行VB开发的应用程序,必须使该机器包含程序中所有用到的动态
链接库和控件文件(OCX或VBX文件),并需要把它们在Windows中加以
注册。
为了减少拷贝和注册DLL、OCX和VBX给用户带来的麻烦,VB自带了一个包装程序,利用它给应用程序打包,生成安装盘。包中可以包含应用程序相关文件、DLL文件、OCX文件、VBX文件等。要把程序包安装到某台机器上时,只需在该机器上执行Setup程序即可,由Setup程序自动完成相应的DLL、OCX和VBX文件的拷贝和注册。
应用程序与机器环境无关性测试方法
要保证程序的机器环境的无关性,必须要进行严格测试。但由于在开发机器上,所有调用的文件都实际存在,DLL、OCX和VBX等文件存在并且已经注册,所以无法进行程序的机器环境无关性测试。测试只能在其它机器上进行,可以分成以下几步:
(1)另找一台只安装了Windows系统而没有安装任何其它软件的机器,且只有Windows系统子目录。
(2)在该机器上解包并执行程序。
(3)若执行无误则进入下一步,否则该软件需根据提示进行修改。该步骤保证了调用DLL、OCX和VBX的正确性,但并不能保证与路径无关。
(4)改变应用程序的安装目录再进一步验证路径无关性,若无误进入下一步,否则该软件需根据提示进行修改。该步骤保证软件自带文件的调用正确性。
(5)另找一台只安装了Windows系统的机器,Windows系统子目录与前台机器不一样,然后重复以上步骤,若无误说明该软件已经达到了机器环境无关性的要求。否则该软件需根据提示进行修改。该步骤保证软件绝对没有调用任何没有自带的外部文件。
应用程序的