• <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開發應用程序如何使用INI文件

    發布: 2007-5-25 09:21 | 作者: ShowMan | 來源: 互聯網 | 查看: 52次 | 進入軟件測試論壇討論

    領測軟件測試網

    用VB開發應用程序如何使用INI文件

    返回
    為 了 方 便 用 戶 使 用 和 使 系 統 具 有 靈 活 性, 大 多 數 Win-dows 應 用 程 序 將 用 戶 所 做 的 選 擇 以 及 各 種 變 化 的 系 統 信 息 記 錄 在 初 始 化 (INI) 文 件 中。 因 此, 當 系 統 的 環 境 發 生 變 化 時, 可 以 直 接 修 改 INI 文 件, 而 無 需 修 改 程 序。 由 此 可 見, INI 文 件 對 系 統 功 能 是 至 關 重 要 的。 本 文 將 介 紹 采 用 Visual Basic for Windows(下 稱 VB) 開 發 Windows 應 用 程 序 時 如 何 讀 寫 INI 文 件。

    INI 文 件 是 文 本 文 件, 由 若 干 部 分 (section) 組 成, 在 每 個 帶 括 號 的 標 題 下 面, 是 若 干 個 以 單 個 單 詞 開 頭 的 關 鍵 詞 (keyword) 和 一 個 等 號, 每 個 關 鍵 詞 會 控 制 應 用 程 序 某 個 功 能 的 工 作 方 式, 等 號 右 邊 的 值 (value) 指 定 關 鍵 詞 的 操 作 方 式。 其 一 般 形 式 如 下 :



    [section1]
    keyword1=valuel
    keyword2=value2
    … …
    [section2]
    keyword1=value1
    keyword2=value2
    … …

    其 中, 如 果 等 號 右 邊 無 任 何 內 容 (即 value 為 空), 那 就 表 示 Windows 應 用 程 序 已 為 該 關 鍵 詞 指 定 了 缺 省 值, 如 果 在 整 個 文 件 中 找 不 到 某 個 關 鍵 詞 (或 整 個 一 部 分), 那 同 樣 表 示 為 它 們 指 定 了 缺 省 值。 各 個 部 分 所 出 現 的 順 序 是 無 關 緊 要 的, 在 每 一 個 部 分 里, 各 個 關 鍵 詞 的 順 序 同 樣 也 無 關 緊 要。

    讀 寫 INI 文 件 通 常 有 兩 種 方 式 : 一 是 在 Windows 中 用 “記 事 本” (Notepad) 對 其 進 行 編 輯, 比 較 簡 單, 無 需 贅 述; 二 是 由 Windows 應 用 程 序 讀 寫 INI 文 件, 通 常 是 應 用 程 序 運 行 時 讀 取 INI 文 件 中 的 信 息, 退 出 應 用 程 序 時 保 存 用 戶 對 運 行 環 境 的 某 些 修 改。

    關 鍵 詞 的 值 的 類 型 多 為 字 符 串 或 整 數 型, 應 分 兩 種 情 況 讀 寫。 為 了 使 程 序 具 有 可 維 護 性 和 可 移 植 性, 最 好 把 對 INI 文 件 的 讀 寫 封 裝 在 一 個 模 塊 (RWINI.BAS) 中, 在 RWI-NI.BAS 中 構 造 GetIniS 和 GetIniN 函 數 以 及 SetIniS 和 Se-tIniN 過 程, 在 這 些 函 數 和 過 程 中 需 要 使 用 WindowsAPI 的 “GetPrivateprofileString”、 “GetPrivateProfileInt” 和 “WritePrivateProfileString” 函 數。

    RWINI.BAS 模 塊 的 程 序 代 碼 如 下 :

    在 General-Declearation 部 分 中 聲 明 使 用 到 的 Windows API 函 數 :



    Declare Function GetprivateprofileString Lib “Ker-nel” (ByVal lpAppName As String,
    ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpRetrm-StringAs
    String, ByVal cbReturnString As Integer, ByVal Filename As String) As Integer
    Declare Function GetPrivatePfileInt Lib “Kernel” (ByVal lpAppName As String,
    ByVal lpKeyName As String, ByVal lpDefault As Integer, ByVal Filename As String) As
    Integer
    Declare Funciton WritePrivateprofileString Lib “Kernel” (ByVal lpApplicationName
    As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lplFileName
    As String) As Integer
    Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String, ByValDefString
    As String) As String
    Dim ResultString As String *144, Temp As Integer
    Dim s As String, i As Integer
    Temp%=GetPrivateProfileString(SectionName, KeyWord, “”, ResultString, 144, AppProfileName())
    ‘檢 索 關 鍵 詞 的 值
    If Temp%> 0 Then ‘關 鍵 詞 的 值 不 為 空
    s=“”
    For i=1 To 144
    If Asc(Mid$(ResultString, i, 1)) =0 Then
    Exit For
    Else
    s=s & Mid$(ResultString, i, 1)
    End If
    Next
    Else
    Temp%=WritePrivateProfilesString(sectionname, KeyWord, DefString, ppProfileName())
    ‘將 缺 省 值 寫 入 INI 文 件
    s=DefString
    End If
    GetIniS=s
    End Function
    Function GetIniN(ByVal SectionName As String, ByVal KeyWord As String, ByValDefValue
    As Ineger) As Integer
    Dim d As Long, s As String
    d=DefValue
    GetIniN=GetPrivate ProfileInt(SectionName,
    KeyWord, DefValue, ppProfileName())
    If d <> DefValue Then
    s=“” &d
    d=WritePrivateProfileString(SectionName,
    KeyWord, s, AppProfileName())
    End If
    End Function
    Sub SetIniS(ByVal SectionName As String, BtVa KeyWord As String, ByVal ValStr
    As String)
    Dim res%
    res%=WritePrivateprofileString(SectionName, KeyWord, ValStr, AppProfileName())
    End Sub
    Sub SetIniN(ByVal SectionName As String, ByVal KeyWord As String, ByVal ValInt
    As Integer)
    Dim res%, s$
    s$=Str$(ValInt)
    res%=WriteprivateProfileString(SectionName, KeyWord, s$, AppProfileName())
    End Sub

    SectionName 為 每 一 部 分 的 標 題, KeyWord 為 關 鍵 詞, GetIniS 和 GetIniN 中 的 DefValue 為 關 鍵 詞 的 缺 省 值, SetIniS 和 SetIniN 的 ValStr 和 ValInt 為 要 寫 入 INI 文 件 的 關 鍵 詞 的 值。 為 了 能 更 好 地 說 明 如 何 使 用 以 上 函 數 和 過 程, 下 面 舉 兩 個 實 例。

    實 例 1:

    開 發 應 用 程 序 通 常 要 使 用 數 據 庫 和 其 它 一 些 文 件, 這 些 文 件 的 目 錄 (包 括 路 徑 和 文 件 名) 不 應 在 程 序 中 固 定, 而 是 保 存 在 INI 文 件 中, 程 序 運 行 時 由 INI 文 件 中 讀 入。 讀 入 數 據 庫 文 件 的 代 碼 如 下 :



    Dim Databasename As String
    Databasename=GetIniS(“數 據 庫”, “職 工”, “”)
    If DatabaseName=“” Then DatabaseName=InputBox(“請 輸 入 數 據 庫 《職 工》 的 目 錄”),
    App.Title)’ 也 可 通 過 “文 件 對 話 框” 進 行 選 擇
    On Error Resume Next
    Set db=OpenDatabas(DatabaseName)
    If Err <> 0 Then
    MsgBox“打 開 數 據 庫 失 敗 !”, MB-
    ICONSTOP, App.Title:Goto ErrorProcessing
    Else
    SetIniS“數 據 庫”, “職 工”, DatabaseName
    End If
    On Error GoTo 0
    … …

    實 例 2:

    為 了 方 便 用 戶 操 作, 有 時 需 要 保 存 用 戶 界 面 的 某 些 信 息, 例 如 窗 口 的 高 度 和 寬 度 等。 裝 載 窗 體 時, 從 INI 文 件 中 讀 入 窗 體 高 度 和 寬 度, 卸 載 窗 體 時 將 窗 體 當 前 高 度 和 寬 度 存 入 INI 文 件, 代 碼 如 下 :



    Sub Form1_Load()
    … …
    Forml.Height=GetIniN(“窗 體 1”, “高 度”, 6000)
    Form1.Width=GetIniN(“窗 體 1”, “高 度”, 4500)
    End Sub
    … …
    Sub Form1_Unload()
    … …
    SetIniN“窗 體 1”, “高 度”, Me.Height
    SetIniN“窗 體 1,” 寬 度 “, Me.Width
    … …
    End Sub

    延伸閱讀

    文章來源于領測軟件測試網 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>