麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用VB開發(fā)應(yīng)用程序如何使用INI文件

2019-11-18 17:51:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
為了方便用戶使用和使系統(tǒng)具有靈活性,大多數(shù)Win-dows應(yīng)用程序?qū)⒂脩羲龅倪x擇以及各種變化的系統(tǒng)信息記錄在初始化(INI)文件中。因此,當(dāng)系統(tǒng)的環(huán)境發(fā)生變化時(shí),可以直接修改INI文件,而無(wú)需修改程序。由此可見,INI文件對(duì)系統(tǒng)功能是至關(guān)重要的。本文將介紹采用VisualBasicforWindows(下稱VB)開發(fā)Windows應(yīng)用程序時(shí)如何讀寫INI文件。

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



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



其中,如果等號(hào)右邊無(wú)任何內(nèi)容(即value為空),那就表示W(wǎng)indows應(yīng)用程序已為該關(guān)鍵詞指定了缺省值,如果在整個(gè)文件中找不到某個(gè)關(guān)鍵詞(或整個(gè)一部分),那同樣表示為它們指定了缺省值。各個(gè)部分所出現(xiàn)的順序是無(wú)關(guān)緊要的,在每一個(gè)部分里,各個(gè)關(guān)鍵詞的順序同樣也無(wú)關(guān)緊要。

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

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

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

在General-Declearation部分中聲明使用到的WindowsAPI函數(shù):



DeclareFunctionGetprivateprofileStringLib“Ker-nel”(ByVallpAppNameAsString,
ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpRetrm-StringAs
String,ByValcbReturnStringAsInteger,ByValFilenameAsString)AsInteger
DeclareFunctionGetPrivatePfileIntLib“Kernel”(ByVallpAppNameAsString,
ByVallpKeyNameAsString,ByVallpDefaultAsInteger,ByValFilenameAsString)As
Integer
DeclareFuncitonWritePrivateprofileStringLib“Kernel”(ByVallpapplicationName
AsString,ByVallpKeyNameAsString,ByVallpStringAsString,ByVallplFileName
AsString)AsInteger
FunctionGetIniS(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefString
AsString)AsString
DimResultStringAsString*144,TempAsInteger
DimsAsString,iAsInteger
Temp=GetPrivateProfileString(SectionName,KeyWord,“”,ResultString,144,AppProfileName())
‘檢索關(guān)鍵詞的值
IfTemp>0Then‘關(guān)鍵詞的值不為空
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
FunctionGetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefValue
AsIneger)AsInteger
DimdAsLong,sAsString
d=DefValue
GetIniN=GetPrivateProfileInt(SectionName,
KeyWord,DefValue,ppProfileName())
Ifd<>DefValueThen
s=“”&d
d=WritePrivateProfileString(SectionName,
KeyWord,s,AppProfileName())
EndIf
EndFunction
SubSetIniS(ByValSectionNameAsString,BtVaKeyWordAsString,ByValValStr
AsString)
Dimres
res=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
EndSub
SubSetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValValInt
AsInteger)
Dimres,s$
s$=Str$(ValInt)
res=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
EndSub

SectionName為每一部分的標(biāo)題,KeyWord為關(guān)鍵詞,GetIniS和GetIniN中的DefValue為關(guān)鍵詞的缺省值,SetIniS和SetIniN的ValStr和ValInt為要寫入INI文件的關(guān)鍵詞的值。為了能更好地說(shuō)明如何使用以上函數(shù)和過(guò)程,下面舉兩個(gè)實(shí)例。

實(shí)例1:

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



DimDatabasenameAsString
Databasename=GetIniS(“數(shù)據(jù)庫(kù)”,“職工”,“”)
IfDatabaseName=“”ThenDatabaseName=InputBox(“請(qǐng)輸入數(shù)據(jù)庫(kù)《職工》的目錄”),
App.Title)'也可通過(guò)“文件對(duì)話框”進(jìn)行選擇
OnErrorResumeNext
Setdb=OpenDatabas(DatabaseName)
IfErr<>0Then
MsgBox“打開數(shù)據(jù)庫(kù)失敗!”,MB-
ICONSTOP,App.Title:GotoErrorProcessing
Else
SetIniS“數(shù)據(jù)庫(kù)”,“職工”,DatabaseName
EndIf
OnErrorGoTo0
……



實(shí)例2:

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



SubForm1_Load()
……
Forml.Height=GetIniN(“窗體1”,“高度”,6000)
Form1.Width=GetIniN(“窗體1”,“高度”,4500)
EndSub
……
SubForm1_Unload()
……
SetIniN“窗體1”,“高度”,Me.Height
SetIniN“窗體1,”寬度“,Me.Width
……
EndSub->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 性欧美视频在线观看 | 亚洲乱码精品久久久久 | 国产精品视频导航 | 在线成人看片 | 久久国产精品影视 | 手机黄色小视频 | 成人区一区二区 | 日本不卡中文字幕 | 国产亚洲美女精品久久久2020 | 久久伊人精品热在75 | 国产v综合v亚洲欧美久久 | 免费一级毛片免费播放 | 国产精品久久久久久久亚洲按摩 | 久久久久免费精品国产小说色大师 | 国产精品久久久久久久模特 | 国产小视频在线 | 黑人操穴 | 中文字幕在线视频日本 | xxxx8| 精品一区二区三区中文字幕老牛 | 黄网站免费入口 | 91精品免费在线 | 色99久久 | 免费毛片电影 | 国产精品免费麻豆入口 | 精品国产一二区 | 国产精品视频二区不卡 | 玖玖视频精品 | 精品国产视频一区二区三区 | 欧美乱淫 | 热@国产| 中文字幕综合在线观看 | 久久免费视频一区 | 性少妇videosexfreexx | 欧美成在线视频 | 国产宾馆3p国语对白 | 免费久久久久久 | 久久久久久久久久久av | 久久精品欧美一区二区三区不卡 | 久草干| 久久国产在线观看 |