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

INI 文件的操作

概述

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

ini 文件是文本文件,中間的數據格式一般為:
[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將用戶所作的選擇以及各種變化的系統信息記錄在這兩個文件中。System.ini 描述了系統硬件的當前狀態,Win.ini 文件則包含了Windows 系統運行環境的當前配置。由于 Win.ini 文件的重要性和常用性,Win32 中有專門對 Win.ini 進行操作的 api,它們是:

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

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

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


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

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

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


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

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


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

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

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


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

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

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

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

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

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


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

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


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

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

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


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

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

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


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

WritePrivateProfileSection(
LPCTSTR lpAppName, // 指向包含 Section 名稱的字符串地址
LPCTSTR lpString // 要寫入的數據的地址
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 并寫入數據,如果已經存在,則用字符串代替原來的值。當指定的 ini 也不存在的時候,API 會自動建立一個新的文件,所以使用 ini 的好處是我們不必為了保存少量的數據涉及到文件操作,就連查找文件是否存在的操作都不必要。

使用要點:

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

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


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


導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿(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成人福利| 亚洲免费伊人电影在线观看av| 西西裸体人体做爰大胆久久久 | 亚洲国产精品www| 日韩午夜在线电影| 久久精品在线观看| av成人老司机| 六月天综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 国产老女人精品毛片久久| 亚洲精品影视| 欧美激情女人20p| 久久久久国产精品厨房| 国产精品一区二区你懂得| 久久一区二区精品| 久久精品国产999大香线蕉| 国产精品久久久久aaaa樱花| 亚洲伦理在线| 欧美一区二区三区在线看| 国产老肥熟一区二区三区| 欧美大胆成人| 欧美第十八页| 正在播放日韩| 欧美日韩亚洲综合一区| 亚洲精品一品区二品区三品区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩国产色站一区二区三区| 蜜桃视频一区| 欧美在线视频不卡| 免费观看在线综合色| 国产精品第十页| 亚洲国产一区二区在线| 国产一区二区高清| 亚洲影院高清在线| 国内精品久久久久久久97牛牛| 欧美影院久久久| 欧美在线观看视频一区二区三区| 合欧美一区二区三区| 一本久道久久久| 99re国产精品| 亚洲美女精品久久| 久久一二三四| 国产精品一区在线观看| 99视频精品在线| 日韩视频一区二区三区在线播放免费观看| 久久成人免费日本黄色| 亚洲欧美综合精品久久成人| 欧美一区二区三区婷婷月色 | 亚洲精品欧美| 久久久xxx| 日韩视频专区| 国产一区二区三区成人欧美日韩在线观看 | 久久综合久久综合久久| 国产亚洲精品成人av久久ww| 亚洲男同1069视频| 国产精品一区在线观看| 亚洲欧美区自拍先锋| 欧美在线视频观看| 国产夜色精品一区二区av| 欧美一区二区三区日韩| 久久亚洲私人国产精品va| 国产三级精品三级| 亚洲成人在线视频播放 | 亚洲精品国产视频| 国产精品高潮在线| 亚洲网站在线播放| 韩国欧美一区| 久久精品夜色噜噜亚洲a∨| 一本色道久久综合亚洲精品小说 | 亚洲欧美另类在线观看| 国产精品亚洲综合久久| 欧美激情va永久在线播放| 亚洲国产欧美日韩| 亚洲综合精品一区二区| 久久av资源网| 亚洲成人在线| 午夜久久久久久| 毛片基地黄久久久久久天堂| 国产伦精品一区二区三| 欧美精品国产| 免费成人网www| 亚洲电影免费观看高清完整版在线观看 | 国产精品sm| 亚洲人成网站色ww在线| 亚洲午夜av| 欧美国产日韩一区二区在线观看| 久久久国产成人精品| 在线播放中文一区| 亚洲新中文字幕| 老司机精品导航| 国产精品99久久99久久久二8 | 香蕉久久精品日日躁夜夜躁| 午夜精品福利视频| 一区二区三区成人| 嫩模写真一区二区三区三州| 久久综合网络一区二区| 日韩午夜av| 国产日韩在线视频| 欧美日韩国产一区二区三区地区| 香蕉久久夜色精品国产使用方法| 亚洲高清影视| 亚洲精品婷婷| 国产亚洲精品一区二区| 欧美日本久久| 一区二区三区欧美在线| 亚洲国产欧美在线人成| 欧美午夜一区二区| 快射av在线播放一区| 久久久久久夜| 国产综合色在线视频区| 欧美日韩不卡在线| 久久午夜精品| 亚洲电影在线播放| 久久精品一区二区| 亚洲欧美日韩成人高清在线一区| 欧美ed2k| 久久久www成人免费毛片麻豆| 艳妇臀荡乳欲伦亚洲一区| 欧美大片免费观看| 久久夜色精品国产| 久久精品伊人| 久久国产精品久久久| 亚洲欧美激情在线视频| 亚洲最新视频在线| 亚洲精选久久| 亚洲欧洲日本一区二区三区| 欧美国产在线观看| 久久综合影音| 久色成人在线| 久久一区中文字幕| 久久九九久久九九| 久久大逼视频| 久久久久久久999| 久久久综合网站| 久热re这里精品视频在线6| 欧美在线国产| 欧美中文在线字幕| 久久福利视频导航| 久久av老司机精品网站导航| 午夜精品福利视频| 亚洲视频免费| 亚洲男女自偷自拍| 午夜精品国产| 欧美伊人久久| 久久蜜桃香蕉精品一区二区三区| 欧美一区二区三区喷汁尤物| 国产一区二区三区在线观看免费视频 | 亚洲欧美视频在线观看| 亚洲深夜激情| 亚洲欧美日韩在线一区| 性色一区二区三区| 久久成年人视频| 久久夜色精品一区| 欧美激情一区二区三级高清视频| 欧美电影在线观看| 欧美日韩和欧美的一区二区| 欧美偷拍另类| 久久国产免费看| 久久国产欧美精品| 麻豆精品网站| 国产日韩欧美不卡在线| 国产在线成人| 欧美剧在线观看| 国产精品成人免费精品自在线观看| 欧美午夜精品电影| 国产日韩欧美在线| 亚洲电影免费在线| 亚洲图片在线观看| 久久久久国产免费免费| 亚洲大胆人体在线| 99精品国产一区二区青青牛奶| 亚洲天堂网在线观看| 久久久www成人免费无遮挡大片 | 亚洲欧美制服另类日韩| 久久免费黄色| 亚洲免费不卡| 亚洲一区免费视频| 亚洲精品一区二区在线观看| 一区二区三区精品国产| 欧美在线播放一区二区| 亚洲动漫精品| 午夜精品在线视频| 欧美人妖另类| 黄色亚洲精品| 亚洲欧美国产77777| 女人色偷偷aa久久天堂| 久久另类ts人妖一区二区| 亚洲国产精品999| 亚洲欧美日本日韩| 欧美精品一区二区三| 国产综合第一页| 亚洲伊人伊色伊影伊综合网| 麻豆久久婷婷| 亚洲欧美日本日韩| 欧美另类一区二区三区| 国语自产精品视频在线看| 亚洲午夜久久久久久久久电影网| 美脚丝袜一区二区三区在线观看|