久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

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

     barbarossia 2006-09-26
    6、用VB開發應用程序如何使用INI文件

    為了方便用戶使用和使系統具有靈活性,大多數Win-dows應用程序將用戶所做的選擇以及各種變化的系統信息記錄在初始化(INI)文件中。因此,當系統的環境發生變化時,可以直接修改INI文件,而無需修改程序。由此可見,INI文件對系統功能是至關重要的。本文將介紹采用VisualBasicforWindows(下稱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部分中聲明使用到的WindowsAPI函數:

    Declare Function GetprivateprofileString Lib"Ker-nel"(ByVallpAppName As String,ByVallpKeyName As String,ByVallpDefault As String,ByVal lpRetrm-String As String,ByVal cbReturnString As Integer,ByVal Filename As String)As Integer

    Declare FunctionGetPrivatePfileInt Lib "Kernel"(ByVal lpAppName As String,ByVal lpKeyName As String,ByVal lpDefault As Integer,ByVal Filename As String)As Integer

    Declare FuncitonWritePrivateprofileString Lib "Kernel"(ByVal lpApplicationName As String,ByVal lpKeyName As String,ByVal lpString As String,ByVal lplFileName As String)As Integer

    寫入INI文件
    Function GetIniS(ByVal SectionName As String,ByVal KeyWord As String,ByVal DefString As String)As String
    Dim ResultString As String * 144,Temp As Integer
    Dims As String,i As Integer
    Temp%=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
    ‘檢索關鍵詞的值
    IfTemp%>0Then‘關鍵詞的值不為空
    s=""
    Fori=1To144
    IfAsc(Mid$(ResultString,I,1))=0Then
    ExitFor
    Else
    s=s&Mid$(ResultString,I,1)
    EndIf
    Next
    Else
    Temp%=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())
    ‘將缺省值寫入INI文件
    s=DefString
    EndIf
    GetIniS=s
    EndFunction

    讀INI文件
    FunctionGetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefValue As Ineger)AsInteger
    DimdAsLong,sAsString
    d=DefValue
    GetIniN=GetPrivateProfileInt(SectionName,KeyWord,DefValue,ppProfileName())
    If d<>DefValueThen
        s=""&d
        d=WritePrivateProfileString(SectionName,KeyWord,s,AppProfileName())
    EndIf
    EndFunction

    SubSetIniS(ByVal SectionName As String,BtVal KeyWord As String,ByVal ValStr As String)
    Dim res%
    res%=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
    EndSub

    SubSetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValValIntAsInteger)
    Dimres%,s$
    s$=Str$(ValInt)
    res%=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
    EndSub

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

    實例1:

    開發應用程序通常要使用數據庫和其它一些文件,這些文件的目錄(包括路徑和文件名)不應在程序中固定,而是保存在INI文件中,程序運行時由INI文件中讀入。讀入數據庫文件的代碼如下:
    DimDatabasenameAsString
    Databasename=GetIniS("數據庫","職工","")
    If DatabaseName=""ThenDatabaseName=InputBox("請輸入數據庫《職工》的目錄"),App.Title)’也可通過"文件對話框"進行選擇
    OnErrorResumeNext
    Setdb=OpenDatabas(DatabaseName)
    IfErr<>0Then
    MsgBox"打開數據庫失敗!",MB-
    ICONSTOP,App.Title:GotoErrorProcessing
    Else
    SetIniS"數據庫","職工",DatabaseName
    EndIf
    OnErrorGoTo0
    ……
    實例2:

    為了方便用戶操作,有時需要保存用戶界面的某些信息,例如窗口的高度和寬度等。裝載窗體時,從INI文件中讀入窗體高度和寬度,卸載窗體時將窗體當前高度和寬度存入INI文件,代碼如下:
    Sub Form1_Load()
    ……
    Forml.Height=GetIniN("窗體1","高度",6000)
    Form1.Width=GetIniN("窗體1","高度",4500)
    EndSub
    ……
    Sub Form1_Unload()
    ……
    SetIniN"窗體1","高度",Me.Height
    SetIniN"窗體1,"寬度",Me.Width
    ……
    End Sub

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 国产精品天干天干综合网| 少妇人妻AV无码专区| 3D动漫精品啪啪一区二区免费| 白丝乳交内射一二三区| 日韩高清亚洲日韩精品一区二区| 国产乱了伦视频大全亚琴影院| 久久婷婷国产综合精品| 亚洲人成电影在线天堂色| 久久午夜夜伦鲁鲁片免费无码影视| 久久人人爽人人爽人人av| 少妇被粗大的猛进出69影院| 中文 在线 日韩 亚洲 欧美| 亚洲色大成网站WWW国产| 亚洲人成无码网站18禁| 2020国产欧洲精品网站| 久久大蕉香蕉免费| 18禁超污无遮挡无码网址| 久久精品国产亚洲av天海翼| 无码人妻丰满熟妇啪啪网不卡| 肉大捧一进一出免费视频| 欧洲免费一区二区三区视频| 内射毛片内射国产夫妻| 亚洲AVAV天堂AV在线网阿V| 欧美日韩在线视频| 免费人成黄页在线观看国产| 华人在线亚洲欧美精品| 色屁屁WWW影院免费观看入口| 99在线精品国自产拍中文字幕| 在线观看免费人成视频播放| 天天影视网色香欲综合网| 精品超清无码视频在线观看| 精品一区二区三区在线成人| 亚洲国内精品一区二区| 国精产品一区二区三区有限公司| 高清无码一区二区在线观看| 不卡一区二区国产精品| 99精品国产在热久久婷婷| 国产欧美日韩高清在线不卡| 久久精品国产99国产精品严洲| 亚洲爆乳精品无码AAA片| 亚洲VA成无码人在线观看天堂|