• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用VB開發與機器環境無關的程序

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 15次 | 進入軟件測試論壇討論

    領測軟件測試網 作者: 童愛紅、譚明金  

      軟件的開發,必須要保證與機器環境的無關性,這是一個在開發和調試過程中都必須注意的問題。本文以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 && "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系統子目錄與前臺機器不一樣,然后重復以上步驟,若無誤說明該軟件已經達到了機器環境無關性的要求。否則該軟件需根據提示進行修改。該步驟保證軟件絕對沒有調用任何沒有自帶的外部文件。

      應用程序的系統無關性是軟件成敗的一個重要因素,是程序設計中需要詳細規劃的一個重要方面,同時也是程序調試的一個重點內容。本文討論的方法,稍加修改亦可適用于其它開發工具。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>