青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

INI 文件的操作

概述

在程序中經(jīng)常要用到設(shè)置或者其他少量數(shù)據(jù)的存盤(pán),以便程序在下一次執(zhí)行的時(shí)候可以使用,比如說(shuō)保存本次程序執(zhí)行時(shí)窗口的位置、大小、一些用戶(hù)設(shè)置的數(shù)據(jù)等等,在 Dos 下編程的時(shí)候,我們一般自己產(chǎn)生一個(gè)文件,由自己把這些數(shù)據(jù)寫(xiě)到文件中,然后在下一次執(zhí)行的時(shí)候再讀出來(lái)使用。在 Win32 編程中當(dāng)然你也可以這樣干,但 Windows 已經(jīng)為我們提供了兩種方便的辦法,那就是使用注冊(cè)表或者 ini 文件(Profile)來(lái)保存少量數(shù)據(jù)。本文中先介紹一下 .ini 文件的使用。

ini 文件是文本文件,中間的數(shù)據(jù)格式一般為:
[Section1 Name]
KeyName1=value1
KeyName2=value2
...

[Section2 Name]
KeyName1=value1
KeyName2=value2

ini 文件可以分為幾個(gè) Section,每個(gè) Section 的名稱(chēng)用 [] 括起來(lái),在一個(gè) Section 中,可以有很多的 Key,每一個(gè) Key 可以有一個(gè)值并占用一行,格式是 Key=value,Win32 對(duì) ini 文件操作的 api 中,有一部分是對(duì) win.ini 操作的,有一部分是對(duì)用戶(hù)自定義的 ini 文件操作的。Win.in 和 system.ini 是Windows的兩個(gè)非常重要的初始化文件,Windows將用戶(hù)所作的選擇以及各種變化的系統(tǒng)信息記錄在這兩個(gè)文件中。System.ini 描述了系統(tǒng)硬件的當(dāng)前狀態(tài),Win.ini 文件則包含了Windows 系統(tǒng)運(yùn)行環(huán)境的當(dāng)前配置。由于 Win.ini 文件的重要性和常用性,Win32 中有專(zhuān)門(mén)對(duì) Win.ini 進(jìn)行操作的 api,它們是:

GetProfileInt - 從 Win.ini 文件的某個(gè) Section 取得一個(gè) key 的整數(shù)值,它的原形是:

GetProfileInt(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱(chēng)的字符串地址
INT nDefault // 如果 Key 值沒(méi)有找到,則返回缺省的值是多少
);

如果 Key 值沒(méi)有找到的話(huà),返回值是 nDefault 指定的缺省值,如果 Key 中的值是負(fù)數(shù),則返回 0,如果 Key 指定的是數(shù)字和字符串的混合,則返回?cái)?shù)字部分的值,比如說(shuō) x=1234abcd,則返回 1234


GetProfileString - 從 Win.ini 文件的某個(gè) Section 取得一個(gè) key 的字符串,它的原形是:

GetProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱(chēng)的字符串地址
LPCTSTR lpDefault, // 如果 Key 值沒(méi)有找到,則返回缺省的字符串的地址
LPTSTR lpReturnedString, // 返回字符串的緩沖區(qū)地址
DWORD nSize // 緩沖區(qū)的長(zhǎng)度
);

返回的字符串在緩沖區(qū)內(nèi),返回的 eax 值是返回的字符串的長(zhǎng)度(不包括尾部的0)


GetProfileSection - 從 Win.ini 文件中讀出整個(gè) Section 的內(nèi)容,它的原形是:

GetProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPTSTR lpReturnedString, // 返回?cái)?shù)據(jù)的緩沖區(qū)地址
DWORD nSize // 返回?cái)?shù)據(jù)的緩沖區(qū)長(zhǎng)度
);


WriteProfileSection - 將一個(gè)整個(gè) Section 的值 寫(xiě)入 Win.ini 文件的指定 Section 中,它的原形是:

WriteProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpString // 要寫(xiě)入的數(shù)據(jù)的地址
);

如果 Win.ini 沒(méi)有指定的 Section,API 會(huì)新建立一個(gè)并寫(xiě)入數(shù)據(jù),如果已經(jīng)存在,則先刪除原來(lái) Seciton 中所有的 Key 值然后寫(xiě)入新的。


WriteProfileString - 將一個(gè) Key 值寫(xiě)入 Win.ini 文件的指定 Section 中,它的原形是:

WriteProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱(chēng)的字符串地址
LPCTSTR lpString // 要寫(xiě)的字符串地址
);

如果 Win.ini 沒(méi)有指定的 Section,API 會(huì)新建 Section,如果沒(méi)有指定的 Key 則新建一個(gè) Key 并寫(xiě)入數(shù)據(jù),如果已經(jīng)存在,則用字符串代替原來(lái)的值。
以上的 Api 是對(duì) Win.ini 操作的,當(dāng)然對(duì)于我們來(lái)說(shuō),用的更多的是在程序運(yùn)行的目錄中建立自己的 ini 文件,如果需要對(duì)自己的 ini 文件操作,就要用到另一組 Api,這一組 api 和上面的很象,只要把上面一組的 Profile 換成 PrivateProfile(私有的)就可以了,參數(shù)中也相應(yīng)的多了一個(gè) ini 文件名的參數(shù)。例如 GetPrivateProfileInt、GetPrivateProfileSection、WritePrivateProfileString 等等, 下面分別介紹:

GetPrivateProfileInt - 從 ini 文件的某個(gè) Section 取得一個(gè) key 的整數(shù)值,它的原形是:

GetPrivateProfileInt(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱(chēng)的字符串地址
INT nDefault // 如果 Key 值沒(méi)有找到,則返回缺省的值是多少
LPCTSTR lpFileName // ini 文件的文件名
);

中間參數(shù)和返回值的定義和 GetProfileInt 是一樣的。


GetPrivateProfileString - 從 ini 文件的某個(gè) Section 取得一個(gè) key 的字符串,它的原形是:

GetPrivateProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱(chēng)的字符串地址
LPCTSTR lpDefault, // 如果 Key 值沒(méi)有找到,則返回缺省的字符串的地址
LPTSTR lpReturnedString, // 返回字符串的緩沖區(qū)地址
DWORD nSize // 緩沖區(qū)的長(zhǎng)度
LPCTSTR lpFileName // ini 文件的文件名
);


GetPrivateProfileSection - 從 ini 文件中讀出整個(gè) Section 的內(nèi)容,它的原形是:

GetPrivateProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPTSTR lpReturnedString, // 返回?cái)?shù)據(jù)的緩沖區(qū)地址
DWORD nSize // 返回?cái)?shù)據(jù)的緩沖區(qū)長(zhǎng)度
LPCTSTR lpFileName // ini 文件的文件名
);

這個(gè) api 可以讀出整個(gè) section 的內(nèi)容,當(dāng)你不知道 section 中有哪些 key 的時(shí)候,可以使用這個(gè) api 將整個(gè) section 讀出后再處理。


GetPrivateProfileSectionNames - 從 ini 文件中獲得 Section 的名稱(chēng),它的原形是:

GetPrivateProfileSectionNames(
LPTSTR lpszReturnBuffer, // 返回?cái)?shù)據(jù)的緩沖區(qū)地址
DWORD nSize // 返回?cái)?shù)據(jù)的緩沖區(qū)長(zhǎng)度
LPCTSTR lpFileName // ini 文件的文件名
);

如果 ini 中有兩個(gè) Section: [sec1] 和 [sec2],則返回的是 'sec1',0,'sec2',0,0 ,當(dāng)你不知道 ini 中有哪些 section 的時(shí)候可以用這個(gè) api 來(lái)獲取名稱(chēng)


WritePrivateProfileSection - 將一個(gè)整個(gè) Section 的內(nèi)容入 ini 文件的指定 Section 中,它的原形是:

WritePrivateProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpString // 要寫(xiě)入的數(shù)據(jù)的地址
LPCTSTR lpFileName // ini 文件的文件名
);


WritePrivateProfileString - 將一個(gè) Key 值寫(xiě)入 ini 文件的指定 Section 中,它的原形是:

WritePrivateProfileString(
LPCTSTR lpAppName, // 指向包含 Section 名稱(chēng)的字符串地址
LPCTSTR lpKeyName, // 指向包含 Key 名稱(chēng)的字符串地址
LPCTSTR lpString // 要寫(xiě)的字符串地址
LPCTSTR lpFileName // ini 文件的文件名
);

如果 ini 中沒(méi)有指定的 Section,API 會(huì)新建 Section,如果沒(méi)有指定的 Key 則新建一個(gè) Key 并寫(xiě)入數(shù)據(jù),如果已經(jīng)存在,則用字符串代替原來(lái)的值。當(dāng)指定的 ini 也不存在的時(shí)候,API 會(huì)自動(dòng)建立一個(gè)新的文件,所以使用 ini 的好處是我們不必為了保存少量的數(shù)據(jù)涉及到文件操作,就連查找文件是否存在的操作都不必要。

使用要點(diǎn):

在我們實(shí)際使用的時(shí)候,用的最多的是 GetPrivateProfileString 和 WritePrivateProfileString,但在對(duì)自定義 ini 文件操作的時(shí)候要注意的是,如果 lpFileName 指定的文件沒(méi)有路徑的話(huà),Api 會(huì)去 Windows 的安裝目錄去找而不會(huì)在當(dāng)前目錄找,但是每次用到 ini 函數(shù)要獲取當(dāng)前路徑顯然太麻煩了,這里有一個(gè)變通的辦法,你只要在 ini 文件名前面加上 .\ 就可以了,比如說(shuō)要對(duì)本目錄下的 user.ini 操作,那么文件名就是 '.\user.ini' 這樣顯然比較方便。另外,當(dāng)你要把一個(gè) Key 清除的時(shí)候,可以使用把 lpString 指向一個(gè)空的字符串然后使用 WritePrivateProfileString。當(dāng)你要把一個(gè) section 的全部?jī)?nèi)容清空的時(shí)候,也不必把 key 一個(gè)個(gè)的清除,可以使用把 lpString 指向一個(gè)空的字符串然后使用 WritePrivateProfileSection。

posted on 2010-09-03 09:27 wrh 閱讀(390) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


導(dǎo)航

<2010年5月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

統(tǒng)計(jì)

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久噜噜噜久久中文字免| 黑人一区二区三区四区五区| 日韩视频专区| 欧美激情免费在线| 另类天堂av| 亚洲成色最大综合在线| 久久精品一区二区三区不卡牛牛 | 亚洲精品1区2区| 亚洲黄色免费网站| 亚洲国产专区校园欧美| 欧美国产亚洲精品久久久8v| 欧美大片免费看| 你懂的国产精品| 亚洲欧洲午夜| 99日韩精品| 亚洲国产精品成人va在线观看| 亚洲黄色三级| 午夜精品亚洲一区二区三区嫩草| 久久精品国产久精国产一老狼| 欧美波霸影院| 久久精视频免费在线久久完整在线看| 欧美1区视频| 午夜精品在线| 欧美日韩国产在线| 91久久精品国产91久久性色tv| 亚洲精品综合在线| 美日韩精品视频| 亚洲欧美日韩在线高清直播| 欧美日韩精品中文字幕| 好看的av在线不卡观看| 欧美一区亚洲| 亚洲综合日韩在线| 欧美亚一区二区| 亚洲香蕉网站| 99精品欧美一区二区三区综合在线| 玖玖精品视频| 亚洲第一福利视频| 欧美国产第一页| 欧美v亚洲v综合ⅴ国产v| 一区二区三区在线观看欧美| 欧美资源在线| 久久亚洲视频| 99国产一区| 亚洲午夜日本在线观看| 国产情侣一区| 免费看亚洲片| 欧美国产亚洲精品久久久8v| 日韩午夜av| 久久成人免费电影| 欧美国产视频一区二区| 欧美日韩国产综合视频在线观看中文 | 欧美三区在线观看| 亚洲国产精品尤物yw在线观看| 蜜桃av综合| 欧美肥婆在线| 久久精品在线| 欧美女人交a| 久久九九99视频| 欧美精品综合| 亚洲电影欧美电影有声小说| 国产精品久久久久久五月尺| 久久人人爽人人| 国产一区二区视频在线观看| 亚洲国产精品久久久久| 国产一区二区三区在线观看精品| 亚洲国产精品传媒在线观看 | 欧美激情网友自拍| 韩国欧美一区| 欧美亚洲三级| 久久精品日韩欧美| 国产精品久久久久久久久果冻传媒| 91久久中文字幕| 亚洲经典三级| 欧美不卡福利| 一区二区三区www| 亚洲午夜精品久久久久久app| 女人色偷偷aa久久天堂| 欧美国产激情二区三区| 亚洲国产高清一区二区三区| 久久中文久久字幕| 最新亚洲激情| 亚洲欧美日韩精品久久| 国产色婷婷国产综合在线理论片a| 亚洲色图综合久久| 鲁大师成人一区二区三区| 激情欧美国产欧美| 欧美日韩理论| 久久精品一级爱片| 亚洲美女色禁图| 久久成人精品| 在线亚洲观看| 亚洲福利电影| 国产精品社区| 欧美国产免费| 亚洲欧美一区在线| 亚洲欧洲一区二区三区| 久久精品国产亚洲a| 亚洲小少妇裸体bbw| 亚洲精选在线观看| 亚洲福利视频网| 狠狠做深爱婷婷久久综合一区| 欧美日韩高清在线观看| 免费成人黄色av| 久久精品电影| 久久激情五月激情| 亚洲欧美国产高清| 亚洲欧美美女| 欧美一区二区黄| 午夜精品偷拍| 久久精品视频在线| 久久久久久网站| 久久一本综合频道| 免费中文日韩| 欧美日韩亚洲一区二区三区四区| 欧美精品在线一区二区三区| 欧美国产日韩a欧美在线观看| 亚洲专区一二三| 香蕉成人久久| 美女网站久久| 一本色道久久88精品综合| 亚洲国产精品精华液网站| 亚洲第一中文字幕| 国产欧美日韩精品专区| 亚洲国产另类久久精品| 亚洲午夜精品福利| 久久精品国产亚洲aⅴ| 老鸭窝亚洲一区二区三区| 能在线观看的日韩av| 亚洲精品美女在线观看| 一区二区三区四区精品| 欧美亚洲免费在线| 欧美色中文字幕| 亚洲韩国精品一区| 久久精品123| 亚洲韩国日本中文字幕| 久久国产精品一区二区| 欧美视频日韩视频在线观看| 国产综合久久| 欧美激情va永久在线播放| 国产精品看片你懂得| 亚洲美女在线观看| 99在线精品视频在线观看| 久久国产视频网站| 国产亚洲精品久久久久久| 一区二区三区色| 亚洲三级免费| 欧美成人一区二区三区| 亚洲精品国产无天堂网2021| 久久综合五月| 91久久在线播放| 亚洲黄色视屏| 欧美午夜www高清视频| 亚洲性感美女99在线| 亚洲激情黄色| 国产精品蜜臀在线观看| 午夜精品一区二区三区四区| 亚洲深夜激情| 久久久久久电影| 亚洲国产精品成人va在线观看| 午夜国产精品影院在线观看 | 亚洲精品久久久久久久久| 久久久久欧美精品| 亚洲欧美资源在线| 91久久精品日日躁夜夜躁国产| 欧美3dxxxxhd| 欧美日韩综合在线| 午夜久久久久| 久久综合九色99| 欧美日本免费| 亚洲你懂的在线视频| 久久精品国产免费看久久精品| 亚洲三级电影全部在线观看高清 | 亚洲尤物视频在线| 欧美专区亚洲专区| 久久久免费观看视频| 欧美精品粉嫩高潮一区二区 | 亚洲福利视频一区二区| 亚洲国产精品第一区二区三区| 欧美特黄a级高清免费大片a级| 久久亚洲精选| 国产日本欧美一区二区三区在线 | 国产精品日韩一区| 最新亚洲电影| 亚洲精品乱码久久久久久按摩观| 欧美在线在线| 亚洲一区二区三区四区五区午夜 | 久久久www成人免费无遮挡大片| 亚洲最新视频在线| 亚洲黄色在线看| 国产在线不卡精品| 一区二区国产在线观看| 一区二区三区 在线观看视| 欧美aⅴ一区二区三区视频| 国产精品久久久久天堂| 亚洲精品1区| 亚洲男人的天堂在线| 国产精品家教| 欧美成人精品激情在线观看| 免费视频一区| 亚洲综合色丁香婷婷六月图片|