




已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言讀取INI配置文件Ini.h#pragma once#include afxTempl.hclass DLLPORT CIniprivate:CString m_strFileName;public:CIni(CString strFileName) :m_strFileName(strFileName)public:/一般性操作:BOOL SetFileName(LPCTSTR lpFileName); /設(shè)置文件名CString GetFileName(void); /獲得文件名BOOL SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue, bool bCreate = true); /設(shè)置鍵值,bCreate是指段名及鍵名未存在時,是否創(chuàng)建。CString GetValue(LPCTSTR lpSection, LPCTSTR lpKey); /得到鍵值.BOOL DelSection(LPCTSTR strSection); /刪除段名BOOL DelKey(LPCTSTR lpSection, LPCTSTR lpKey); /刪除鍵名public:/高級操作:int GetSections(CStringArray& arrSection); /枚舉出全部的段名int GetKeyValues(CStringArray& arrKey, CStringArray& arrValue, LPCTSTR lpSection); /枚舉出一段內(nèi)的全部鍵名及值BOOL DelAllSections();/*使用方法:CIni ini(c:a.ini);int n;/*獲得值TRACE(%s,ini.GetValue(段1,鍵1);*/*添加值ini.SetValue(自定義段,鍵1,值);ini.SetValue(自定義段2,鍵1,值,false);*/*枚舉全部段名CStringArray arrSection;n=ini.GetSections(arrSection);for(int i=0;in;i+)TRACE(%sn,arrSectioni);*/*枚舉全部鍵名及值CStringArray arrKey,arrValue;n=ini.GetKeyValues(arrKey,arrValue,段1);for(int i=0;in;i+)TRACE(鍵:%sn值:%sn,arrKeyi,arrValuei);*/*刪除鍵值ini.DelKey(段1,鍵1);*/*刪除段ini.DelSection(段1);*/*刪除全部ini.DelAllSections();*/Ini.cpp#include StdAfx.h#include Ini.h#define MAX_ALLSECTIONS 2048 /全部的段名#define MAX_SECTION 260 /一個段名長度#define MAX_ALLKEYS 6000 /全部的鍵名#define MAX_KEY 260 /一個鍵名長度BOOL CIni:SetFileName(LPCTSTR lpFileName)CFile file;CFileStatus status;if (!file.GetStatus(lpFileName, status)return TRUE;m_strFileName = lpFileName;return FALSE;CString CIni:GetFileName(void)return m_strFileName;BOOL CIni:SetValue(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue, bool bCreate)TCHAR lpTempMAX_PATH = 0 ;/以下if語句表示如果設(shè)置bCreate為false時,當(dāng)沒有這個鍵名時則返回TRUE(表示出錯)/!*&*none-value*&!* 這是個垃圾字符沒有特別意義,這樣亂寫是防止湊巧相同。if (!bCreate)GetPrivateProfileString(lpSection, lpKey, !*&*none-value*&!*, lpTemp, MAX_PATH, m_strFileName);if (strcmp(lpTemp, !*&*none-value*&!*) = 0)return TRUE;if (WritePrivateProfileString(lpSection, lpKey, lpValue, m_strFileName)return FALSE;elsereturn GetLastError();CString CIni:GetValue(LPCTSTR lpSection, LPCTSTR lpKey)DWORD dValue;TCHAR lpValueMAX_PATH = 0 ;dValue = GetPrivateProfileString(lpSection, lpKey, , lpValue, MAX_PATH, m_strFileName);return lpValue;BOOL CIni:DelSection(LPCTSTR lpSection)if (WritePrivateProfileString(lpSection, NULL, NULL, m_strFileName)return FALSE;elsereturn GetLastError();BOOL CIni:DelKey(LPCTSTR lpSection, LPCTSTR lpKey)if (WritePrivateProfileString(lpSection, lpKey, NULL, m_strFileName)return FALSE;elsereturn GetLastError();int CIni:GetSections(CStringArray& arrSection)/*本函數(shù)基礎(chǔ):GetPrivateProfileSectionNames - 從 ini 文件中獲得 Section 的名稱如果 ini 中有兩個 Section: sec1 和 sec2,則返回的是 sec1,0,sec2,0,0 ,當(dāng)你不知道ini 中有哪些 section 的時候可以用這個 api 來獲取名稱*/int i;int iPos = 0;int iMaxCount;TCHAR chSectionNamesMAX_ALLSECTIONS = 0 ; /總的提出來的字符串TCHAR chSectionMAX_SECTION = 0 ; /存放一個段名。GetPrivateProfileSectionNames(chSectionNames, MAX_ALLSECTIONS, m_strFileName);/以下循環(huán),截斷到兩個連續(xù)的0for (i = 0; iMAX_ALLSECTIONS; i+)if (chSectionNamesi = 0)if (chSectionNamesi = chSectionNamesi + 1)break;iMaxCount = i + 1; /要多一個0號元素。即找出全部字符串的結(jié)束部分。arrSection.RemoveAll();/清空原數(shù)組for (i = 0; iiMaxCount; i+)chSectioniPos+ = chSectionNamesi;if (chSectionNamesi = 0)arrSection.Add(chSection);memset(chSection, 0, MAX_SECTION);iPos = 0;return (int)arrSection.GetSize();int CIni:GetKeyValues(CStringArray& arrKey, CStringArray& arrValue, LPCTSTR lpSection)/*本函數(shù)基礎(chǔ):GetPrivateProfileSection- 從 ini 文件中獲得一個Section的全部鍵名及值名如果ini中有一個段,其下有 段1=值1 段2=值2,則返回的是 段1=值1,0,段2=值2,0,0 ,當(dāng)你不知道獲得一個段中的所有鍵及值可以用這個。*/int i;int iPos = 0;CString strKeyValue;int iMaxCount;TCHAR chKeyNamesMAX_ALLKEYS = 0 ; /總的提出來的字符串TCHAR chKeyMAX_KEY = 0 ; /提出來的一個鍵名GetPrivateProfileSection(lpSection, chKeyNames, MAX_ALLKEYS, m_strFileName);for (i = 0; iMAX_ALLKEYS; i+)if (chKeyNamesi = 0)if (chKeyNamesi = chKeyNamesi + 1)break;iMaxCount = i + 1; /要多一個0號元素。即找出全部字符串的結(jié)束部分。arrKey.RemoveAll();/清空原數(shù)組arrValue.RemoveAll();for (i = 0; iiMaxCount; i+)chKeyiPos+ = chKeyNamesi;if (chKeyNamesi = 0)strKeyValue = chKey;arrKey.Add(strKeyValue.Left(strKeyValue.Find(=);arrValue.Add(strKeyValue.Mid(strKeyValue.Find(=) + 1);memset(chKey, 0, MAX_KEY);iPos = 0;re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分公司與總公司管理制度
- 智慧酒店能耗管理制度
- ppp項目投資管理制度
- 搞笑視頻班會課件
- 中醫(yī)學(xué)體質(zhì)的概念講課件
- 多媒體教學(xué)在幼兒語言發(fā)展中的作用
- 2024北京一六六中高一3月月考語文試題及答案
- 瞳孔觀察課件
- 健康與睡眠講課件
- 2024年氣體放電燈:氙氣燈資金申請報告代可行性研究報告
- 管道工廠化預(yù)制推廣應(yīng)用課件
- 5-1貫入法砌筑砂漿砂漿抗壓強(qiáng)度檢測方案
- 錨桿加固施工方案(通用版)
- 地源熱泵埋管冬夏季換熱平衡計算
- 甲骨文專‖教學(xué)課件
- 規(guī)章制度和操作規(guī)程的管理制度范本
- 形式發(fā)票格式2 INVOICE
- 清華大學(xué)美術(shù)學(xué)院陶瓷藝術(shù)設(shè)計系研究生導(dǎo)師及研究課題
- 理論力學(xué)運(yùn)動學(xué)題庫
- 計算機(jī)控制實驗報告初稿(共31頁)
- 2012年內(nèi)蒙古鄂爾多斯市中考物理試卷【含答案可編輯】
評論
0/150
提交評論