在VB應(yīng)用程序中使用INI文件的體會 作者:hsboy 中國軟件 開發(fā) 中心 摘要 結(jié)合實例介紹了在VB中調(diào)用Windows API函數(shù)操作初始化文件的方法和優(yōu)點. 關(guān)鍵詞 VB Windows API INI文件 一、INI文件概述 Windows INI文件,可解釋為Windows初始化文件,
在VB應(yīng)用程序中使用INI文件的體會VB
。它是一種專門用
在VB應(yīng)用程序中使用INI文件的體會
作者:hsboy 中國軟件開發(fā)中心
摘要 結(jié)合實例介紹了在VB中調(diào)用Windows API函數(shù)操作初始化文件的方法和優(yōu)點.
關(guān)鍵詞 VB Windows API INI文件
一、INI文件概述
Windows INI文件,可解釋為Windows初始化文件。它是一種專門用來保存應(yīng)用程序初始化信息和運行環(huán)境信息的文本文件。例如Windows 3.1中兩個著名的INI文件win.ini和system.ini就在Windows啟動時定義了Windows環(huán)境中鼠標響應(yīng)速度、使用的外殼(shell)程序等設(shè)置。Windows系統(tǒng)附帶的許多應(yīng)用程序也都有自己的INI文件,例如控制面板的INI 文件為control.ini,它也同樣定義了控制面板的有關(guān)設(shè)置。ini文件是一種文本文件,它可以通過Notepad等文本編輯器進行編輯。ini文件具有特定的格式。一個INI文件是由若干個段(section)組成的,每個段中包含若干關(guān)鍵字(key)及相應(yīng)的值(value)。段的格式如下:
[SectionName]
KeyName=Value
其中SectionName和KeyName分別是段名和關(guān)鍵字名,Value為關(guān)鍵字對應(yīng)的設(shè)定值。需要加以注意的是:
(1)段名必須加以"["和"]",且"["必須在屏幕的第一列;
(2)關(guān)鍵字名也必須從屏幕的第一列開始書寫,且后面必須緊跟"=";
(3)可以對文件加以注釋,每行注釋須以";"開頭。
在Windows中,可以通過手工編輯INI 文件來改變應(yīng)用程序設(shè)置。如要想將Windows的外殼程序改為文件管理器,則可將system.ini中[boot]段下的"shell=progman.exe"改為"shell=winfile.exe"。有些設(shè)置也可以直接在應(yīng)用程序界面上更改,但實際上也是通過修改INI文件來保存這些修改的。
二、在VB中操作INI文件的幾個Windows API函數(shù)
在開發(fā)應(yīng)用程序時,我們可以創(chuàng)建應(yīng)用程序自己的INI文件,通過INI文件保存應(yīng)用程序的一些運行環(huán)境信息,然后在程序中讀取INI文件中的設(shè)置信息并據(jù)以處理。一旦程序的運行環(huán)境需要變更,則可以通過直接修改INI文件或在程序中提供專門的界面間接地修改INI文件來保證程序的可用性。
VB(Visual Basic)語言是近年來十分流行的一種面向?qū)ο?/STRONG>的編程語言,但VB本身并不提供操縱INI文件的函數(shù)。所幸的是, VB支持DLL(Dynamic Link Library)的調(diào)用。(一個DLL事實上就是一個可供其它支持DLL調(diào)用的應(yīng)用程序調(diào)用的外部函數(shù)集。)DLL中的函數(shù)稱為API(應(yīng)用編程接口,Application Programming Interface)函數(shù)。我們可以通過調(diào)用相應(yīng)的API函數(shù)來實現(xiàn)操縱INI文件的功能。下面列出了相關(guān)的API函數(shù)及其說明。在使用這些函數(shù)之前,必須首先在VB的模塊文件(.bas)中用Declare語句對它們進行聲明。
三、實例分析
下面就筆者參加天津財經(jīng)學(xué)院教學(xué)辦公自動化(OA)系統(tǒng)開發(fā)的實踐介紹一下具體的實現(xiàn)方法。假定項目文件為man.mak,對應(yīng)的INI文件為man.ini,其部分內(nèi)容如下:
[數(shù)據(jù)庫]
文件名=\DEC_LX5120DBOA.mdb
[開戶銀行]
類型數(shù)=3
B1=中國人民銀行
B2=中國農(nóng)業(yè)銀行
B3=中國工商銀行
1. 在程序啟動時(執(zhí)行SUB MAIN()和SUB FORM_LOAD()),從man.ini文件中讀取相應(yīng)的值并進行以后的操作。其中SUB MAIN()中的有關(guān)代碼如下:
Dim DbName as String*255 ’數(shù)據(jù)庫名
Dim n as Integer
’得到INI文件名,INIfileName為一全局變量
INIfileName=App.Path&""&app.ExeName&".ini"
’從man.ini中讀取數(shù)據(jù)庫文件名
n=GetPrivateProfileString("數(shù)據(jù)庫","文件名","",DbName,Len(DbName),INIfileName)
DbName=Left(DbName,n)
’打開數(shù)據(jù)庫,Db為一全局變量
Set Db=OpenDatabase(DbName)
在FORM_LOAD()過程中,讀取了man.ini中有關(guān)的內(nèi)容并加入相應(yīng)的組合框(Combo Box)列表中,
電腦資料
《在VB應(yīng)用程序中使用INI文件的體會VB》(http://www.ishadingyu.com)。這里只給出對"[開戶銀行]"段的相應(yīng)操作,代碼如下:Dim BankCount as Integer ’銀行類型數(shù)
Dim BankName as String*255 ’銀行名
Dim i as Integer,n as Integer
’讀取原有銀行類型數(shù)
BankCount=GetPrivateProfileInt("開戶銀行","類型數(shù)",0,INIfileName)
’讀取銀行名并加入到組合框cmbBank中
For I=1 to BankCount
n=GetPrivateProfileString("開戶銀行","B"&i,BankName,Len(BankName),INIfileName)
BankName=Left(BankName,n)
cmbBank.AddItem BankName
Next I
2. 在程序中提供了一個專用維護界面,該界面通過操作INI文件的相應(yīng)內(nèi)容來實現(xiàn)相應(yīng)的修改。
’下面代碼實現(xiàn)數(shù)據(jù)庫路徑的修改
Dim n as Integer
’txtDbName.Text對應(yīng)新的數(shù)據(jù)庫文件名
If txtDbName.Text="" Then
MsgBox "數(shù)據(jù)庫文件名不能為空!",MB_ICONSTOP,App.Title
txtDbName.SetFocus
Exit Sub
Else
’修改數(shù)據(jù)庫文件名
n=WritePrivateProfileString("數(shù)據(jù)庫","文件名",txtDbName.Text,INIfileName)
End If
’下面代碼往組合框"開戶銀行"中增加一個新銀行
Dim NewBank as String ’新銀行名
Dim BankCount as Integer ’銀行類型數(shù)
Dim I as Integer,n as Integer
’輸入新銀行名
NewBank=InputBox("增加開戶銀行。",App.Title,"")
If NewBank="" Then
MsgBox "銀行名不能為空!",MB_ICONSTOP,App.Title
Exit Sub
Else
’判斷輸入的銀行名是否已存在于列表中
For I=0 to cmbBank.ListCount-1
If NewBank=cmbBank.List(i) Then
’存在則終止
MsgBox NewBank&"已存在于列表中!",MB_ICONSTOP,App.Title)
Exit Sub
End If
Next I
’讀取原銀行類型數(shù)
BankCount=GetPriVateProfileInt("開戶銀行","類型數(shù)",0,INIfileName)
’將銀行類型數(shù)增1
BankCount=BankCount+1
n=WritePrivateProfileString("開戶銀行","類型數(shù)",Str(BankCount),INIfileName)
’將新銀行名寫入INI文件中
n=WritePrivateProfileString("開戶銀行","B"&BankCount,NewBank,INIfileName)
End If
四、結(jié)論
綜上所述,在實際的VB應(yīng)用程序開發(fā)中,適當?shù)乩肐NI文件,可以很好地改善程序的可維護性和可用性。尤其在數(shù)據(jù)庫訪問中使用INI文件可使用戶在數(shù)據(jù)庫路徑改變時免去修改原代碼之苦。在實際開發(fā)中,若結(jié)合一定的維護界面,也可使應(yīng)用程序容易維護,增強友好性。
原文轉(zhuǎn)自:http://www.ltesting.net