資源描述:
《vc中讀取配置文件的方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、在VisualC++6.0下對Windows配置設(shè)置文件的存取訪問方法的詳細介紹?! ∫?、引言?????不論是對于程序開發(fā)人員還是軟件應(yīng)用人員,一定不會對擴展名為"ini"的文件感到陌生,不僅Windows操作系統(tǒng)將大名鼎鼎的win.ini作為記錄當前系統(tǒng)狀態(tài),并根據(jù)其記錄內(nèi)容對系統(tǒng)進行配置的一種便捷的方法,而且眾多的應(yīng)用軟件也廣泛地使用該類型的配置文件來對軟件進行記錄、配置。本文就針對配置設(shè)置文件的使用展開討論,以期能為軟件狀態(tài)的記錄與設(shè)置尋求一種方便簡潔的實現(xiàn)方法?! 《⑴渲迷O(shè)置文件概述 配置設(shè)置文件是Windows操作系統(tǒng)下的一種特殊化的ASCII文件,以"ini"為文件擴展名。該
2、文件也被稱做是初始化文件(initializationfile)和概要文件(profile),通常應(yīng)用程序可以擁有自己的配置設(shè)置文件來存儲自己的狀態(tài)信息,一般來說私有的配置設(shè)置文件比較小,可以減少程序在初始化時讀取配置文件時的信息量,從而可以提高程序的啟動速度、提高應(yīng)用程序和系統(tǒng)的性能。但如待存取的信息涉及到Windows系統(tǒng)環(huán)境或是其他的應(yīng)用程序時才必須在Windows系統(tǒng)的配置文件win.ini中記錄并在訪問的同時發(fā)送出消息WM_WININICHANGE給所有的頂層窗口,通知其他的程序系統(tǒng)的配置文件已做了更改。但由于win.ini中不僅記錄了系統(tǒng)的有關(guān)信息,也存儲著許多其他應(yīng)用軟件的一些
3、配置數(shù)據(jù),所以訪問的數(shù)據(jù)量要遠比私有的配置文件大的多?! ∨渲梦募锏男畔⒅阅転橄到y(tǒng)和眾多的軟件所讀取并識別,是由于其內(nèi)部對數(shù)據(jù)的存取采用了預(yù)先約定好的"項-值對(entry-valuepairs)"存儲結(jié)構(gòu)來對待存取的數(shù)據(jù)進行分門別類地進行條理清晰的存儲。我們可以打開系統(tǒng)目錄下的win.ini文件:[windows]load=run=NullPort=None[Desktop]WallpaperStyle=2Pattern=(無)[intl]s2359=PMiCountry=86…… 可見,配置文件把信息分成若干"節(jié)",節(jié)標題放在方括號中,如[Desktop]就是Desktop節(jié),在
4、一個節(jié)內(nèi)包含了一些與之相關(guān)相近的"項",并通過等號對其進行賦值。一般的形式如下所示:[SECTION]ENTRY=VALUE 其中VALUE值可以有兩種類型:數(shù)值型和字符串型,而且Windows操作系統(tǒng)專門為此提供了6個API函數(shù)來對配置設(shè)置文件進行讀、寫: GetPrivateProfileInt()從私有初始化文件獲取整型數(shù)值 GetPrivateProfileString()從私有初始化文件獲取字符串型值 GetProfileInt從win.ini獲取整數(shù)值 GetProfileString從win.ini獲取字符串值 WritePrivateProfileString寫字
5、符串到私有初始化文件 WriteProfileString寫字符串到win.ini 在這里需要指出:當向配置文件存儲信息時,不論是數(shù)據(jù)還是字符串都要先轉(zhuǎn)換成字符串,然后再行存儲。利用GetPrivateProfileString讀取配置文件(.ini)配置文件中經(jīng)常用到ini文件,在VC中其函數(shù)分別為:寫入.ini文件:boolWritePrivateProfileString(LPCTSTRlpAppName,LPCTSTRlpKeyName,LPCTSTRlpString,LPCTSTRlpFileName);讀取.ini文件:DWORDGetPrivateProfileString
6、(LPCTSTRlpAppName,LPCTSTRlpKeyName,LPCTSTRlpDefaut,LPSTRlpReturnedString,DWORDnSize,LPCTSTRlpFileName);讀取整形值:UINTGetPrivateProfileInt(LPCTSTRlpAppName,LPCTSTRlpKeyName,INTnDefault,LPCTSTRlpFileName);其中個參數(shù)的意思:LPCTSTRlpAppName-------INI文件中的一個字段名LPCTSTRlpKeyName--------lpAppName下的一個鍵名,也就是里面具體的變量名LPCTS
7、TRlpString---------是鍵值,也就是變量的值,必須為LPCTSTR或CString類型LPCTSTRlpFileName--------完整的INI文件路徑名LPCTSTRlpDefaut----------如果沒有其前兩個參數(shù)值,則將此值賦給變量LPSTRlpReturnedString--------接收INI文件中的值的CString對象,即接收緩沖區(qū)DWORDnSize------接收