• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
用VB开发与机器环境无关的程序
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
用VB开发与机器环境无关的程序
软件发布 用VB开发与机器环境无关的程序
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 编程技术 >> VB & VB.NET教程 >> 用VB开发与机器环境无关的程序

用VB开发与机器环境无关的程序

添加时间: 2006-2-16 3:54:47  作者: VB教程  阅读次数:134   来源: http://www.d9soft.com

          利用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:\EXAM1\PIC下面。

  使用绝对路径,程序代码如下:

  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:\exam\pic\earth" && current && ".jpg" 注释:图片文件名(绝对路径)

  Image1.Picture = LoadPicture(FileName$) 注释:显示图片

   Else

   End 注释:程序结束

   End If

  End Sub

  该程序使用绝对路径调用外部文件(earth0.jpgearth7.jpg),当把EXAM目录全部内容拷贝到其它机器上,抽出软盘后,运行程序将发生找不到文件错误。若采用VB.APP.PATH属性,把形成图片文件名的语句改写如下:

  FileName$ = VB.App.Path && "\pic\earth" && 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 && "exam\pic\earth" && 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系统子目录与前台机器不一样,然后重复以上步骤,若无误说明该软件已经达到了机器环境无关性的要求。否则该软件需根据提示进行修改。该步骤保证软件绝对没有调用任何没有自带的外部文件。

  应用程序的系统无关性是软件成败的一个重要因素,是程序设计中需要详细规划的一个重要方面,同时也是程序调试的一个重点内容。本文讨论的方法,稍加修改亦可适用于其它开发工具。

 

上下文章:

 

上一篇文章: VB创建、修改、删除WIN2K用户 下一篇文章: Delphi 技巧 - 使窗体部分可见

相关文章:

  • Vista驱动程序兼容性另微软汗颜
  • 后门程序变种现身互联网
  • 技巧:用Photoshop开发网站的思路
  • 见证浩辰二次开发技术新变革
  • 谷歌发布Gmail小程序 增加快速查阅等功能

相关软件:

  • 纳米机器人 v1.3.1020
  • 终极程序加密器 3.25
  • 阿达自动定时关机器 6.60
  • TCP/UDP应用开发调试助手 V3.0
  • 程序猫(PC)光驱开关 V1.0
  • 程序监控专家 3.75

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • VB.net2008创建发送与接收端程序
  • C++程序设计之四书五经
  • VB入门教程之四
  • VB入门教程之三
  • VB入门教程之二
  • VB入门教程之一
  • 压缩被DBGIRD控件正在使用的MDB数...
  • 谈谈VB的数据库编程方式
  • 在VB中用DAO实现数据库编程
  • Data控件使用有密码的Access数据库

VB & VB.NET教程阅读排行

  • VB入门教程之一
  • VB入门教程之二
  • VB入门教程之三
  • VB入门教程之四
  • 如何编写高质量的VB代码
  • 初学者必知:VB10个小编程
  • VB访问SQL Server数据库技术全揭密
  • 怎样在VB中控制Word?
  • 用DAO或ADO正确访问Access 2000
  • VB中列表框的使用技巧说明

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • VC++之List Box/Check List Box控...
  • 第二章 PowerBuilder 入门之创建新...
  • VC++ List Ctrl控件
  • 第一章 什么是PowerBuilder
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有