C語(yǔ)言讀取INI配置文件.doc_第1頁(yè)
C語(yǔ)言讀取INI配置文件.doc_第2頁(yè)
C語(yǔ)言讀取INI配置文件.doc_第3頁(yè)
C語(yǔ)言讀取INI配置文件.doc_第4頁(yè)
C語(yǔ)言讀取INI配置文件.doc_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語(yǔ)言讀取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是指段名及鍵名未存在時(shí),是否創(chuàng)建。CString GetValue(LPCTSTR lpSection, LPCTSTR lpKey); /得到鍵值.BOOL DelSection(LPCTSTR strSection); /刪除段名BOOL DelKey(LPCTSTR lpSection, LPCTSTR lpKey); /刪除鍵名public:/高級(jí)操作: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 /一個(gè)段名長(zhǎng)度#define MAX_ALLKEYS 6000 /全部的鍵名#define MAX_KEY 260 /一個(gè)鍵名長(zhǎng)度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語(yǔ)句表示如果設(shè)置bCreate為false時(shí),當(dāng)沒(méi)有這個(gè)鍵名時(shí)則返回TRUE(表示出錯(cuò))/!*&*none-value*&!* 這是個(gè)垃圾字符沒(méi)有特別意義,這樣亂寫(xiě)是防止湊巧相同。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 中有兩個(gè) Section: sec1 和 sec2,則返回的是 sec1,0,sec2,0,0 ,當(dāng)你不知道ini 中有哪些 section 的時(shí)候可以用這個(gè) api 來(lái)獲取名稱*/int i;int iPos = 0;int iMaxCount;TCHAR chSectionNamesMAX_ALLSECTIONS = 0 ; /總的提出來(lái)的字符串TCHAR chSectionMAX_SECTION = 0 ; /存放一個(gè)段名。GetPrivateProfileSectionNames(chSectionNames, MAX_ALLSECTIONS, m_strFileName);/以下循環(huán),截?cái)嗟絻蓚€(gè)連續(xù)的0for (i = 0; iMAX_ALLSECTIONS; i+)if (chSectionNamesi = 0)if (chSectionNamesi = chSectionNamesi + 1)break;iMaxCount = i + 1; /要多一個(gè)0號(hào)元素。即找出全部字符串的結(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 文件中獲得一個(gè)Section的全部鍵名及值名如果ini中有一個(gè)段,其下有 段1=值1 段2=值2,則返回的是 段1=值1,0,段2=值2,0,0 ,當(dāng)你不知道獲得一個(gè)段中的所有鍵及值可以用這個(gè)。*/int i;int iPos = 0;CString strKeyValue;int iMaxCount;TCHAR chKeyNamesMAX_ALLKEYS = 0 ; /總的提出來(lái)的字符串TCHAR chKeyMAX_KEY = 0 ; /提出來(lái)的一個(gè)鍵名GetPrivateProfileSection(lpSection, chKeyNames, MAX_ALLKEYS, m_strFileName);for (i = 0; iMAX_ALLKEYS; i+)if (chKeyNamesi = 0)if (chKeyNamesi = chKeyNamesi + 1)break;iMaxCount = i + 1; /要多一個(gè)0號(hào)元素。即找出全部字符串的結(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論