WEB开发网      濠电姷鏁告慨鐑藉极閸涘﹦绠鹃柍褜鍓氱换娑欐媴閸愬弶鎼愮痪鍓ф嚀閳规垿鎮╃€圭姴顥濋梺姹囧€楅崑鎾诲Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剳闁哥姵鍔欐俊鐢稿礋椤栨艾鍞ㄩ梺闈浤涙担鎻掍壕闁圭儤顨嗛埛鎺楁煕閺囥劌浜滄い蹇e弮閺屸€崇暆鐎n剛鏆犻柧浼欑到閵嗘帒顫濋悡搴d画缂佹鍨垮缁樻媴缁涘娈┑顔斤公缁犳捇銆佸鎰佹▌濠电姭鍋撳ù锝囩《閺€浠嬫煟濡鍤嬬€规悶鍎辫灃闁绘ê寮堕崯鐐电磼閸屾氨效鐎规洘绮忛ˇ瀵哥棯閹佸仮鐎殿喖鐖煎畷鐓庘槈濡警鐎崇紓鍌欑劍椤ㄥ棗鐣濋幖浣歌摕闁绘棃顥撻弳瀣煟濡も偓閻楀棗鈻撳Δ鍛拺閻犲洠鈧櫕鐏€闂佸搫鎳愭慨鎾偩閻ゎ垬浜归柟鐑樼箖閺呮繈姊洪棃娑氬婵☆偅鐟╅、娆掔疀閺冨倻鐦堥梺姹囧灲濞佳勭閿曞倹鐓曢柕濞垮劤閸╋絾顨ラ悙鏉戝妤犵偞锕㈤、娆撴嚃閳哄骞㈤梻鍌欐祰椤鐣峰Ο鑲╃煋妞ゆ棁锟ユ禍褰掓煙閻戞ɑ灏ù婊冪秺濮婅櫣绱掑Ο铏逛桓闂佹寧娲嶉弲娑滅亱闂佸憡娲﹂崹閬嶅煕閹达附鐓欓柤娴嬫櫅娴犳粌鈹戦垾鐐藉仮闁诡喗顨呴埥澶愬箳閹惧褰囩紓鍌欑贰閸犳牠顢栭崨鎼晣闁稿繒鍘х欢鐐翠繆椤栨粎甯涙繛鍛喘濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐鍨嚕缂佹ḿ绡€闁搞儯鍔嶅▍鍥⒑缁嬫寧婀扮紒瀣崌瀹曘垽鎮介崨濠勫幗闁瑰吋鐣崹濠氬煀閺囥垺鐓ユ慨妯垮煐閻撶喖鐓崶銉ュ姢缂佸宕电槐鎺旂磼濡偐鐣虹紓浣虹帛缁诲牆鐣峰鈧俊姝岊槺缂佽鲸绻堝缁樻媴缁涘娈愰梺鎼炲妺閸楀啿鐣烽鐐茬骇闁瑰濮靛▓楣冩⒑缂佹ɑ鈷掗柍宄扮墦瀵偊宕掗悙瀵稿幈闂佹娊鏁崑鎾绘煛閸涱喚鎳呮俊鍙夊姇铻i悶娑掑墲閺傗偓闂備胶绮崝鏇炍熸繝鍥у惞闁绘柨鐨濋弨鑺ャ亜閺冨洦顥夐柛鏂诲€濋幗鍫曟倷閻戞ḿ鍘遍梺鍝勬储閸斿本鏅堕鐐寸厱婵炲棗绻掔粻濠氭煛鐏炵晫效鐎规洦鍋婂畷鐔碱敆閳ь剙鈻嶉敐鍥╃=濞达絾褰冩禍鐐節閵忥絾纭炬い鎴濇川缁粯銈i崘鈺冨幍闁诲孩绋掑玻璺ㄧ不濮椻偓閺屻劌鈽夊Ο澶癸絾銇勯妸锝呭姦闁诡喗鐟╅、鏃堝礋椤撴繄绀勯梻鍌欐祰椤曟牠宕伴弽顐ょ濠电姴鍊婚弳锕傛煙椤栫偛浜版俊鑼额嚙閳规垿鍩勯崘銊хシ濡炪値鍘鹃崗妯侯嚕鐠囨祴妲堥柕蹇曞閳哄懏鐓忓璺虹墕閸旀挳鏌涢弬娆炬Ш缂佽鲸鎸婚幏鍛矙鎼存挸浜鹃柛婵勫劤閻挾鎲搁悧鍫濈瑨闁哄绶氶弻鐔煎礈瑜忕敮娑㈡煛閸涱喗鍊愰柡灞诲姂閹倝宕掑☉姗嗕紦 ---闂傚倸鍊搁崐鎼佸磹閻戣姤鍊块柨鏃堟暜閸嬫挾绮☉妯哄箻婵炲樊浜滈悡娑㈡煕濞戝崬骞樻い鏂挎濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�
开发学院WEB开发综合 用VB开发与机器环境无关的程序 阅读

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

 2006-02-27 11:52:06 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偛顦甸弫鎾绘偐閹绘帞鈧參姊哄Ч鍥х仼闁诲繑鑹鹃悾鐑藉蓟閵夛妇鍘甸梺瑙勵問閸犳牠銆傛總鍛婄厱閹艰揪绱曟牎闂侀潧娲ょ€氫即鐛幒妤€绠f繝闈涘暙娴滈箖鏌i姀鈶跺湱澹曟繝姘厵闁绘劦鍓氶悘杈ㄤ繆閹绘帞澧涚紒缁樼洴瀹曞崬螖閸愬啠鍓濈换娑樼暆婵犱胶鏁栫紓浣介哺閹瑰洤鐣烽幒鎴僵闁瑰吀鐒﹂悗鎼佹⒒娴g儤鍤€闁搞倖鐗犻獮蹇涙晸閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩缁狀垶鏌涢幇闈涙灈鐎瑰憡绻冮妵鍕箻鐎靛摜鐣奸梺纭咁潐濞茬喎顫忕紒妯肩懝闁逞屽墮宀h儻顦查悡銈夋煏閸繃鍋繛宸簻鎯熼梺瀹犳〃閼冲爼宕濋敃鈧—鍐Χ閸℃鐟愰梺鐓庡暱閻栧ジ宕烘繝鍥у嵆闁靛骏绱曢崢顏堟⒑閹肩偛鍔楅柡鍛⊕缁傛帟顦寸紒杈ㄥ笚濞煎繘鍩℃担閿嬵潟闂備浇妗ㄩ悞锕傚箲閸ヮ剙鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘闂傚倸鍊搁崐鎼佸磹妞嬪孩顐芥慨姗嗗厳缂傛氨鎲稿鍫罕闂備礁婀遍搹搴ㄥ窗閺嶎偆涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹  闂傚倸鍊搁崐鎼佸磹閻戣姤鍤勯柤鍝ユ暩娴犳氨绱撻崒娆掑厡缂侇噮鍨堕妴鍐川閺夋垹鍘洪悗骞垮劚椤︻垶宕¢幎鑺ョ厪闊洦娲栨牎闂佽瀵掗崜鐔奉潖閾忓湱纾兼俊顖氭惈椤矂姊洪崷顓涙嫛闁稿妫濋幆鈧い蹇撴祩濡嫰姊洪崫鍕拱婵炲弶岣块幑銏犫攽婵犲嫮鏉搁梺鍝勬川婵兘鎮伴妷鈺傗拻濞达絽鎼敮璺侯熆閻熷府鏀荤紒鍌氱Т楗即宕煎锝呬壕闁哄啫鐗嗙粈鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娑扁偓妤€顭胯閸犳牠婀侀梺缁樕戦悷銉р偓姘煎枤缁粯銈i崘鈺冨幈濡炪倖鍔戦崐鏇㈠几鎼淬劍鐓熼煫鍥ь儏閸旀粓鏌曢崶褍顏€殿喗娼欒灒闁告繂瀚濠碉紕鍋戦崐鎴﹀垂濞差亝鍋¢柍鍝勬噹缁犳牠鏌嶉埡浣告殲闁稿海鍠栭弻鏇㈠炊瑜嶇花濠氭煙閸戙倖瀚�
核心提示:利用VisualBasic开发应用程序时,常常会遇到这样的问题:生成的可执行文件在开发的机器上能够运行,用VB开发与机器环境无关的程序,复制到另一台机器上则无法运行,这种现象称之为应用程序与机器环境相关,同时也是程序调试的一个重点内容,本文讨论的方法,造成这种现象主要有两个方面的原因:一是程序在运行过程中调用了一些文件
利用VisualBasic开发应用程序时,常常会遇到这样的问题:生成的可执行文件在开发的机器上能够运行,复制到另一台机器上则无法运行,这种现象称之为应用程序与机器环境相关。造成这种现象主要有两个方面的原因:一是程序在运行过程中调用了一些文件,如数据库文件、文本文件和图片文件等,由于路径使用不当而无法定位;二是VisualBasic编译成的.EXE文件并不是实际意义上的EXE文件,VisualBasic系统中的标准控件和开发过程中用到的第三方控件,都没有包含在内。此现象可由图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下面。

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

  Dimt1AsInteger

  PRivateSubForm_Load()

  t1=0注释:t1记录时钟事件发生的次数

  EndSub

  PrivateSubTimer1_Timer()

  t1=t1 1

  Ift1<100Then注释:图片共显示100幅

  current=t1Mod8

  注释:current表示当前应该显示哪张图片

  FileName$="A:\exam\pic\earth"&¤t&&".jpg"注释:图片文件名(绝对路径)

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

  Else

  End注释:程序结束

  EndIf

  EndSub

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

  FileName$=VB.App.Path&&"\pic\earth"&¤t&&".jpg"注释:形成显示图片的文件名

  这样无论把exam目录完全复制到任何机器,程序均能运行。

  2.从光盘调用文件实现与路径无关

  把应用程序要调用文件放在光盘指定目录下,应用程序发行时和该光盘的拷贝一同发行。程序运行时,直接从光盘指定目录调用文件,故不会发生因找不到文件而出现的错误。由于不同机器上的光盘盘符不同,因此在开发时不能直接引用光盘的盘符,应用程序必须要先取得光盘盘符,然后再生成需要调用文件的完整文件名。

  取得光驱盘符可以使用API函数,也可以通过以下程序段来检测到光驱盘符:

  PrivateDeclareFunctionGetDriveTypeLib"kernel32"

  Alias"GetDriveTypeA"(ByValnDriveAsString)AsLong注释:声明API函数

  DimdriveAsString

  DimaAsLong

  Fori=0To25

  drive=Chr(65 i)&&":\"注释:形成盘符符号

  a=GetDriveType(drive)

  注释:得到盘符常数

  Ifa=5Then

  ExitFor

  注释:如果是光驱则退出

  EndIf

  Next

  以上程序段放在需要检测光驱的地方,通常放在Form.load事件中,光驱盘符存放在Drive变量中。检测到光驱后,则可直接调用光盘上的文件,如上例中,若PIC目录下的图片文件存放在光盘上,形成文件名的语句则可以用以下语句代替:

  FileName$=Drive&&"exam\pic\earth"&¤t&&".jpg"注释:形成显示图片的文件名

  这样,我们就实现了从光盘调用文件与路径无关了。

  包装应用程序实现与系统无关
  解决了与文件路径相关的问题后,生成的可执行文件在其它没有安装VisualBasic的机器中,依然无法执行。原因之一是VisualBasic具有21个标准控件,这些控件都保存在动态链接库中(扩展名为DLL),VisualBasic的可执行程序中并没有包含;原因之二是开发的应用程序可能包含了第三方控件,VisualBasic的可执行程序中也不包含它们。因此在其它机器上执行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系统子目录与前台机器不一样,然后重复以上步骤,若无误说明该软件已经达到了机器环境无关性的要求。否则该软件需根据提示进行修改。该步骤保证软件绝对没有调用任何没有自带的外部文件。

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

Tags:VB 开发 机器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接