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

INI 文件的操作

概述

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

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

[Section2 Name]
KeyName1=value1
KeyName2=value2

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

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

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

如果 Key 值沒有找到的話,返回值是 nDefault 指定的缺省值,如果 Key 中的值是負數(shù),則返回 0,如果 Key 指定的是數(shù)字和字符串的混合,則返回數(shù)字部分的值,比如說 x=1234abcd,則返回 1234


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

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

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


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

GetProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPTSTR lpReturnedString, // 返回數(shù)據(jù)的緩沖區(qū)地址
DWORD nSize // 返回數(shù)據(jù)的緩沖區(qū)長度
);


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

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

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


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

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

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

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

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

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


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

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


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

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

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


GetPrivateProfileSectionNames - 從 ini 文件中獲得 Section 的名稱,它的原形是:

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

如果 ini 中有兩個 Section: [sec1] 和 [sec2],則返回的是 'sec1',0,'sec2',0,0 ,當你不知道 ini 中有哪些 section 的時候可以用這個 api 來獲取名稱


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

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


WritePrivateProfileString - 將一個 Key 值寫入 ini 文件的指定 Section 中,它的原形是:

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

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

使用要點:

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

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


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


導航

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区二区三区| 久久久噜噜噜久噜久久| 国产精品亚洲第一区在线暖暖韩国| 91久久精品国产91性色tv| 久久综合网络一区二区| 欧美亚洲在线视频| 国产日韩一区二区| 久久国产一区二区| 午夜精品99久久免费| 国产精品亚洲网站| 久久精品国产91精品亚洲| 亚洲欧美国产精品专区久久| 国产精品私拍pans大尺度在线| 亚洲欧美激情精品一区二区| 一本久久综合| 国产精品蜜臀在线观看| 欧美一级夜夜爽| 欧美在线一级va免费观看| 在线观看av一区| 亚洲第一色中文字幕| 欧美综合第一页| 亚洲高清资源综合久久精品| 亚洲国产精品毛片| 欧美日韩日韩| 欧美伊人久久久久久午夜久久久久| 午夜精品久久一牛影视| 在线观看成人一级片| 亚洲国语精品自产拍在线观看| 欧美女激情福利| 性高湖久久久久久久久| 久久九九热免费视频| 亚洲精选久久| 亚洲欧美影院| 亚洲国产精品一区二区www在线| 亚洲激情视频在线播放| 国产精品久久久久久久久搜平片| 久久久久国产精品一区二区| 卡一卡二国产精品| 亚洲先锋成人| 久久久久欧美精品| 亚洲视屏一区| 久久久久久久综合色一本| 亚洲精品日产精品乱码不卡| 宅男噜噜噜66一区二区66| 国产在线视频欧美一区二区三区| 亚洲电影毛片| 国产女主播一区二区三区| 欧美二区在线播放| 国产精品毛片| 亚洲福利视频网站| 国产精品亚洲综合一区在线观看| 女生裸体视频一区二区三区| 欧美日韩在线视频一区二区| 久久免费视频网站| 国产精品电影网站| 亚洲国产精品99久久久久久久久| 国产毛片精品视频| 亚洲精品网址在线观看| 激情视频一区二区| 亚洲一区日韩在线| 99re在线精品| 久久综合伊人77777蜜臀| 亚洲人成人一区二区三区| 久久精品视频免费| 欧美日韩午夜| 欧美二区乱c少妇| 国产欧美日韩一区二区三区在线| 亚洲国产日韩欧美综合久久| 国产日韩av一区二区| 亚洲国产影院| 亚洲第一黄网| 欧美一区影院| 亚洲欧美综合网| 欧美日韩三级一区二区| 欧美激情一区二区三区在线 | 蜜臀久久99精品久久久久久9| 亚洲天堂免费在线观看视频| 免费成年人欧美视频| 久久噜噜噜精品国产亚洲综合| 国产精品乱子久久久久| 一本一本a久久| 一区二区久久久久久| 欧美激情亚洲另类| 91久久精品日日躁夜夜躁国产| 伊人久久婷婷色综合98网| 亚洲欧美在线免费观看| 亚洲男人天堂2024| 欧美视频在线观看视频极品| 亚洲精品国产精品乱码不99| 亚洲精品一区二区在线| 欧美成人xxx| 亚洲承认在线| 99re在线精品| 欧美视频在线免费| 亚洲男人影院| 欧美专区第一页| 国产一区二区三区在线观看视频 | 亚洲视频在线看| 亚洲伊人网站| 国产精品午夜国产小视频| 亚洲中字在线| 久久久国际精品| 精品91久久久久| 美女脱光内衣内裤视频久久影院 | 久久综合中文| 亚洲人成网站在线观看播放| 欧美高清不卡在线| 日韩视频在线观看免费| 亚洲欧美日韩精品久久久久| 国产欧美91| 久久天堂成人| 亚洲精品视频在线看| 午夜老司机精品| 韩国av一区二区| 欧美国产大片| 亚洲免费在线| 欧美国产三区| 亚洲午夜一级| 国内精品视频666| 欧美韩日视频| 亚洲男女自偷自拍图片另类| 欧美插天视频在线播放| aⅴ色国产欧美| 一区二区三区高清在线 | 久久久亚洲精品一区二区三区| 在线看成人片| 欧美视频中文字幕| 久久精品国产精品亚洲综合| 亚洲国内精品在线| 久久久999精品| 夜夜夜久久久| 国产一区二区中文| 欧美精品午夜视频| 欧美一区二区久久久| 亚洲国产色一区| 久久精品国产亚洲高清剧情介绍| 亚洲精品网址在线观看| 国产日韩在线亚洲字幕中文| 欧美精品一区二区久久婷婷| 欧美一区日韩一区| av成人激情| 亚洲国产精品久久久久秋霞影院| 欧美一区二区大片| 一本大道av伊人久久综合| 激情久久久久久久久久久久久久久久| 欧美日韩影院| 欧美好骚综合网| 久久久午夜视频| 午夜精品国产| 制服丝袜激情欧洲亚洲| 亚洲国产成人tv| 免费精品视频| 久久嫩草精品久久久精品一| 亚洲欧美日韩精品久久久| 一本色道久久综合| 亚洲精品永久免费精品| 亚洲国产精品成人综合| 国产一区二区三区在线观看免费视频 | 欧美日韩网址| 欧美成人一品| 开心色5月久久精品| 欧美一区不卡| 亚洲欧美中文日韩v在线观看| 在线视频免费在线观看一区二区| 最新日韩av| 亚洲国产精品久久人人爱蜜臀 | 久久xxxx| 欧美亚洲网站| 亚洲欧美日韩天堂一区二区| 一区二区三区久久| 一本久久综合| 亚洲午夜激情在线| 亚洲自拍偷拍网址| 亚洲欧美日本伦理| 亚洲淫片在线视频| 亚洲综合国产激情另类一区| 亚洲一区在线观看免费观看电影高清| 夜夜夜久久久| 亚洲少妇中出一区| 亚洲欧美日韩国产另类专区| 亚洲欧美日韩一区二区三区在线观看| 亚洲免费影视第一页| 欧美一区2区视频在线观看 | 国产精品黄视频| 国产精品久久网| 国产日韩三区| 国产专区欧美精品| 亚洲日本一区二区三区| 久久精彩视频| 久久综合图片| 亚洲国产精品视频| 亚洲日本中文字幕| 中日韩视频在线观看| 欧美亚洲一区| 蜜臀av在线播放一区二区三区 | 亚洲日本欧美日韩高观看| 亚洲国产一区二区三区a毛片|