Read/Write ini file

// INIMANGER.h: interface for the CINIMANGER class. 
// 
// 
 
#if !defined(AFX_INIMANGER_H__E566489D_1FCE_48EA_9D2D_FA36B2EE246E__INCLUDED_) 
#define AFX_INIMANGER_H__E566489D_1FCE_48EA_9D2D_FA36B2EE246E__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#define	MAX_CHARS	1024 
 
typedef struct tgaINIKEY 
{ 
	CString Section; 
	CString Value; 
	CString Key; 
}INIKEY,*LPINIKEY; 
 
class CINIMANGER   
{ 
public: 
	int EnumAllValue(CString* strValue,int nMaxNum);	//枚举所有键值 
	int EnumKey(CString strSection,CString* strKey,int nMaxNum);	//枚举指定小节的键 
	BOOL EnumSection(CString* strSection,int nMaxNum);	//枚举所有小节 
	CString GetProfileName();	//取得当前Ini文件名 
	int GetSectionKeyNum(CString strSection);	//取得指定小节的键数目 
	int GetTotalKeyNum();		//取得所有键数 
	int GetSectionNum();		//取得所有小节数目 
	void SetKey(CString strSection,CString strKey,int iValue);	//设置指定键的值 
	void SetKey(CString strSection,CString strKey,CString strValue);	//同上 
	int GetKey(CString strSection,CString strKey,int iDefault);	//得到指定键的值 
	CString GetKey(CString strSection,CString strKey,CString strDefault);	//同上 
	BOOL Save();	//将改动写回到Ini文件 
	BOOL Release();	//释放Ini文件 
	CINIMANGER(); 
	virtual ~CINIMANGER(); 
	BOOL LoadProfileFile(CString strFileName);	//载入Ini文件 
private: 
	DWORD* dwKeyNum;				//每Section的Key项目数 
	DWORD dwSectionNum;				//Ini文件的Section总的项目数 
	DWORD dwTotalKeyNum;			//总的Key项目数 
	LPINIKEY* lpIniKey;				//单个Ini文件的Key和Value 
	CString* strSection;			//Section列表 
	CString** strKey;				//Key列表 
	CString strProfileName;			//当前的Ini文件名 
 
}; 
 
#endif // !defined(AFX_INIMANGER_H__E566489D_1FCE_48EA_9D2D_FA36B2EE246E__INCLUDED_) 

 
// INIMANGER.cpp: implementation of the CINIMANGER class.    
//    
//    
   
#include "stdafx.h"    
#include "INIMANGER.h"    
   
#ifdef _DEBUG    
#undef THIS_FILE    
static char THIS_FILE[]=__FILE__;   
#define new DEBUG_NEW    
#endif    
   
//    
// Construction/Destruction    
//    
   
CINIMANGER::CINIMANGER()   
{   
    strSection=NULL;   
    dwKeyNum=NULL;   
    strKey=NULL;   
    dwSectionNum=0;   
    dwTotalKeyNum=0;   
    strProfileName="";   
}   
   
CINIMANGER::~CINIMANGER()   
{   
    Release();   
}   
   
BOOL CINIMANGER::LoadProfileFile(CString strFileName)   
{   
    char lpReturnValue[MAX_CHARS];   
    char lpKeyValue[MAX_CHARS];   
    DWORD i,j;   
    if(strProfileName!="") Release();   
    ::RtlZeroMemory(lpReturnValue,MAX_CHARS);   
    //枚举Section    
    ::GetPrivateProfileString(NULL,NULL,NULL,lpReturnValue,MAX_CHARS,strFileName);   
    if(::lstrcmp(lpReturnValue,"")==0) return FALSE;   
    for(i=0;i<MAX_CHARS;i++)   
    {   
        if(lpReturnValue[i]==0)   
        {   
            if(dwSectionNum>=MAX_CHARS/2) return FALSE;   
            dwSectionNum++;   
            if(lpReturnValue[i+1]==0) break;   
            else continue;   
        }   
    }   
    strSection=new CString[dwSectionNum];   
    if(strSection==NULL) return FALSE;   
    j=0;   
    for(i=0;i<MAX_CHARS;i++)   
    {   
        if(lpReturnValue[i]!=0) strSection[j]+=lpReturnValue[i];   
        else if(lpReturnValue[i+1]!=0) j++;   
        else break;   
    }   
    ::RtlZeroMemory(lpReturnValue,MAX_CHARS);   
   
    //枚举所有Section的Key并取得其Value    
    dwKeyNum=new DWORD[dwSectionNum];   
    if(dwKeyNum==NULL) return FALSE;   
    for(i=0;i<dwSectionNum;i++) dwKeyNum[i]=0;   
    for(i=0;i<dwSectionNum;i++)   
    {   
        GetPrivateProfileString(strSection[i],NULL,NULL,lpReturnValue,MAX_CHARS,strFileName);   
        for(int j=0;j<MAX_CHARS;j++)   
        {   
            //if(lpReturnValue[j]!=0) strKey[i][dwKeyNum[i]]+=lpReturnValue[j];    
            if(lpReturnValue[j]==0)   
            {   
                if(dwKeyNum[i]>=MAX_CHARS/2) return FALSE;   
                dwKeyNum[i]++;   
                /*//取值  
                ::RtlZeroMemory(lpKeyValue,MAX_CHARS);  
                GetPrivateProfileString(strSection[i],strKey[i][dwKeyNum[i]-1],NULL,lpKeyValue,MAX_CHARS,strFileName);  
                lpIniKey[dwTotalKeyNum]=new INIKEY;  
                lpIniKey[dwTotalKeyNum]->Section=strSection[i];  
                lpIniKey[dwTotalKeyNum]->Key=strKey[i][dwKeyNum[i]-1];  
                lpIniKey[dwTotalKeyNum]->Value.Format("%s",lpKeyValue);*/   
                if(dwTotalKeyNum>=MAX_CHARS) return FALSE;   
                dwTotalKeyNum++;   
                if(lpReturnValue[j+1]==0) break;   
                else continue;   
            }   
        }   
    }   
    strKey=new CString*[dwSectionNum];   
    if(strKey==NULL) return FALSE;   
    for(i=0;i<dwSectionNum;i++)   
        strKey[i]=new CString[dwKeyNum[i]];   
    //取所有strKey    
    int k=0;   
    int m=0;   
    for(i=0;i<dwSectionNum;i++)   
    {   
        GetPrivateProfileString(strSection[i],NULL,NULL,lpReturnValue,MAX_CHARS,strFileName);   
        k=0;   
        for(j=0;j<MAX_CHARS;j++)   
        {   
            if(lpReturnValue[j]!=0) strKey[i][k]+=lpReturnValue[j];   
            else if(lpReturnValue[j+1]==0) break;   
            else k++;   
        }   
    }   
    lpIniKey=new LPINIKEY[dwTotalKeyNum];   
    if(lpIniKey==NULL) return FALSE;   
    k=0;   
    for(i=0;i<dwSectionNum;i++)   
    {   
        for(j=0;j<dwKeyNum[i];j++)   
        {   
            ::RtlZeroMemory(lpKeyValue,MAX_CHARS);   
            GetPrivateProfileString(strSection[i],strKey[i][j],NULL,lpKeyValue,MAX_CHARS,strFileName);   
            lpIniKey[k]=new INIKEY;   
            lpIniKey[k]->Section=strSection[i];   
            lpIniKey[k]->Key=strKey[i][j];   
            lpIniKey[k]->Value.Format("%s",lpKeyValue);   
            k++;   
        }   
    }   
    strProfileName.Format("%s",strFileName);   
    return TRUE;   
}   
   
BOOL CINIMANGER::Release()   
{   
    if(strProfileName=="") return FALSE;   
    if(strSection!=NULL)   
    {   
        delete [] strSection;   
        strSection=NULL;   
    }   
    if(dwKeyNum!=NULL)   
    {   
        delete [] dwKeyNum;   
        dwKeyNum=NULL;   
    }   
    if(strKey!=NULL)   
    {   
        for(DWORD i=0;i<dwSectionNum;i++)   
        {   
            if(strKey[i]!=NULL)   
            {   
                delete [] strKey[i];   
                strKey[i]=NULL;   
            }   
        }   
        delete [] strKey;   
    }   
    if(lpIniKey!=NULL)   
    {   
        for(DWORD i=0;i<dwTotalKeyNum;i++)   
        {   
            delete lpIniKey[i];   
            lpIniKey[i]=NULL;   
        }   
        delete [] lpIniKey;   
        lpIniKey=NULL;   
    }   
    dwSectionNum=0;   
    dwTotalKeyNum=0;   
    strProfileName="";   
    return TRUE;   
}   
   
BOOL CINIMANGER::Save()   
{   
    if(strProfileName=="") return FALSE;   
    //检查INI文件    
    HANDLE hFile=CreateFile(strProfileName.GetBuffer(strProfileName.GetLength()),GENERIC_WRITE|GENERIC_READ,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,NULL);   
    CloseHandle(hFile);   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        WritePrivateProfileString(lpIniKey[i]->Section.GetBuffer(MAX_PATH),\   
                                    lpIniKey[i]->Key.GetBuffer(MAX_PATH),\   
                                    lpIniKey[i]->Value.GetBuffer(MAX_PATH),\   
                                    strProfileName.GetBuffer(MAX_PATH));   
    }   
    return TRUE;   
}   
   
CString CINIMANGER::GetKey(CString strSection,CString strKey,CString strDefault)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
            return lpIniKey[i]->Value;   
    }   
    return strDefault;   
}   
   
int CINIMANGER::GetKey(CString strSection,CString strKey,int iDefault)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
        {   
            int iReturn=atoi(lpIniKey[i]->Value.GetBuffer(MAX_PATH));   
            return iReturn;   
        }   
    }   
    return iDefault;   
}   
   
void CINIMANGER::SetKey(CString strSection,CString strKey,CString strValue)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
        {   
            lpIniKey[i]->Value=strValue;   
            return;   
        }   
    }   
    lpIniKey[dwTotalKeyNum]=new INIKEY;   
    lpIniKey[dwTotalKeyNum]->Section=strSection;   
    lpIniKey[dwTotalKeyNum]->Key=strKey;   
    lpIniKey[dwTotalKeyNum]->Value=strValue;   
    dwTotalKeyNum++;   
    for(DWORD j=0;j<dwSectionNum;j++)   
    {   
        if(strSection==this->strSection[j])   
        {   
            dwKeyNum[j]++;   
            return;   
        }   
    }   
    dwSectionNum++;   
    dwKeyNum[dwSectionNum-1]++;   
    return;   
}   
   
void CINIMANGER::SetKey(CString strSection,CString strKey,int iValue)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
        {   
            lpIniKey[i]->Value.Format("%d",iValue);   
            return;   
        }   
    }   
    lpIniKey[dwTotalKeyNum]=new INIKEY;   
    lpIniKey[dwTotalKeyNum]->Section=strSection;   
    lpIniKey[dwTotalKeyNum]->Key=strKey;   
    lpIniKey[dwTotalKeyNum]->Value=iValue;   
    dwTotalKeyNum++;   
    for(DWORD j=0;j<dwSectionNum;j++)   
    {   
        if(strSection==this->strSection[j])   
        {   
            dwKeyNum[j]++;   
            return;   
        }   
    }   
    dwSectionNum++;   
    dwKeyNum[dwSectionNum-1]++;   
    return;   
}   
   
int CINIMANGER::GetSectionNum()   
{   
    return dwSectionNum;   
}   
   
int CINIMANGER::GetTotalKeyNum()   
{   
    return dwTotalKeyNum;   
}   
   
int CINIMANGER::GetSectionKeyNum(CString strSection)   
{   
    for(DWORD i=0;i<dwSectionNum;i++)   
    {   
        if(this->strSection[i]==strSection) return dwKeyNum[i];   
    }   
    return 0;   
}   
   
CString CINIMANGER::GetProfileName()   
{   
    return strProfileName;   
}   
   
int CINIMANGER::EnumSection(CString* strSection,int nMaxNum)   
{   
    if((int)dwSectionNum>nMaxNum) return -1;   
    for(DWORD i=0;i<dwSectionNum;i++)   
        strSection[i]=this->strSection[i];   
    return dwSectionNum;   
}   
   
int CINIMANGER::EnumKey(CString strSection,CString* strKey,int nMaxNum)   
{   
    for(DWORD i=0;i<dwSectionNum;i++)   
    {   
        if(this->strSection[i]==strSection)   
        {   
            if((int)dwKeyNum[i]>nMaxNum) return FALSE;   
            for(DWORD j=0;j<dwKeyNum[i];j++)   
                strKey[j]=this->strKey[i][j];   
            return dwKeyNum[i];   
        }   
    }   
    return -1;   
}   
   
int CINIMANGER::EnumAllValue(CString* strValue,int nMaxNum)   
{   
    if((int)dwTotalKeyNum>nMaxNum) return -1;   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
        strValue[i]=lpIniKey[i]->Value;   
    return dwTotalKeyNum;   
}   



// INIMANGER.cpp: implementation of the CINIMANGER class.    
//    
//    
   
#include "stdafx.h"    
#include "INIMANGER.h"    
   
#ifdef _DEBUG    
#undef THIS_FILE    
static char THIS_FILE[]=__FILE__;   
#define new DEBUG_NEW    
#endif    
   
//    
// Construction/Destruction    
//    
   
CINIMANGER::CINIMANGER()   
{   
    strSection=NULL;   
    dwKeyNum=NULL;   
    strKey=NULL;   
    dwSectionNum=0;   
    dwTotalKeyNum=0;   
    strProfileName="";   
}   
   
CINIMANGER::~CINIMANGER()   
{   
    Release();   
}   
   
BOOL CINIMANGER::LoadProfileFile(CString strFileName)   
{   
    char lpReturnValue[MAX_CHARS];   
    char lpKeyValue[MAX_CHARS];   
    DWORD i,j;   
    if(strProfileName!="") Release();   
    ::RtlZeroMemory(lpReturnValue,MAX_CHARS);   
    //枚举Section    
    ::GetPrivateProfileString(NULL,NULL,NULL,lpReturnValue,MAX_CHARS,strFileName);   
    if(::lstrcmp(lpReturnValue,"")==0) return FALSE;   
    for(i=0;i<MAX_CHARS;i++)   
    {   
        if(lpReturnValue[i]==0)   
        {   
            if(dwSectionNum>=MAX_CHARS/2) return FALSE;   
            dwSectionNum++;   
            if(lpReturnValue[i+1]==0) break;   
            else continue;   
        }   
    }   
    strSection=new CString[dwSectionNum];   
    if(strSection==NULL) return FALSE;   
    j=0;   
    for(i=0;i<MAX_CHARS;i++)   
    {   
        if(lpReturnValue[i]!=0) strSection[j]+=lpReturnValue[i];   
        else if(lpReturnValue[i+1]!=0) j++;   
        else break;   
    }   
    ::RtlZeroMemory(lpReturnValue,MAX_CHARS);   
   
    //枚举所有Section的Key并取得其Value    
    dwKeyNum=new DWORD[dwSectionNum];   
    if(dwKeyNum==NULL) return FALSE;   
    for(i=0;i<dwSectionNum;i++) dwKeyNum[i]=0;   
    for(i=0;i<dwSectionNum;i++)   
    {   
        GetPrivateProfileString(strSection[i],NULL,NULL,lpReturnValue,MAX_CHARS,strFileName);   
        for(int j=0;j<MAX_CHARS;j++)   
        {   
            //if(lpReturnValue[j]!=0) strKey[i][dwKeyNum[i]]+=lpReturnValue[j];    
            if(lpReturnValue[j]==0)   
            {   
                if(dwKeyNum[i]>=MAX_CHARS/2) return FALSE;   
                dwKeyNum[i]++;   
                /*//取值  
                ::RtlZeroMemory(lpKeyValue,MAX_CHARS);  
                GetPrivateProfileString(strSection[i],strKey[i][dwKeyNum[i]-1],NULL,lpKeyValue,MAX_CHARS,strFileName);  
                lpIniKey[dwTotalKeyNum]=new INIKEY;  
                lpIniKey[dwTotalKeyNum]->Section=strSection[i];  
                lpIniKey[dwTotalKeyNum]->Key=strKey[i][dwKeyNum[i]-1];  
                lpIniKey[dwTotalKeyNum]->Value.Format("%s",lpKeyValue);*/   
                if(dwTotalKeyNum>=MAX_CHARS) return FALSE;   
                dwTotalKeyNum++;   
                if(lpReturnValue[j+1]==0) break;   
                else continue;   
            }   
        }   
    }   
    strKey=new CString*[dwSectionNum];   
    if(strKey==NULL) return FALSE;   
    for(i=0;i<dwSectionNum;i++)   
        strKey[i]=new CString[dwKeyNum[i]];   
    //取所有strKey    
    int k=0;   
    int m=0;   
    for(i=0;i<dwSectionNum;i++)   
    {   
        GetPrivateProfileString(strSection[i],NULL,NULL,lpReturnValue,MAX_CHARS,strFileName);   
        k=0;   
        for(j=0;j<MAX_CHARS;j++)   
        {   
            if(lpReturnValue[j]!=0) strKey[i][k]+=lpReturnValue[j];   
            else if(lpReturnValue[j+1]==0) break;   
            else k++;   
        }   
    }   
    lpIniKey=new LPINIKEY[dwTotalKeyNum];   
    if(lpIniKey==NULL) return FALSE;   
    k=0;   
    for(i=0;i<dwSectionNum;i++)   
    {   
        for(j=0;j<dwKeyNum[i];j++)   
        {   
            ::RtlZeroMemory(lpKeyValue,MAX_CHARS);   
            GetPrivateProfileString(strSection[i],strKey[i][j],NULL,lpKeyValue,MAX_CHARS,strFileName);   
            lpIniKey[k]=new INIKEY;   
            lpIniKey[k]->Section=strSection[i];   
            lpIniKey[k]->Key=strKey[i][j];   
            lpIniKey[k]->Value.Format("%s",lpKeyValue);   
            k++;   
        }   
    }   
    strProfileName.Format("%s",strFileName);   
    return TRUE;   
}   
   
BOOL CINIMANGER::Release()   
{   
    if(strProfileName=="") return FALSE;   
    if(strSection!=NULL)   
    {   
        delete [] strSection;   
        strSection=NULL;   
    }   
    if(dwKeyNum!=NULL)   
    {   
        delete [] dwKeyNum;   
        dwKeyNum=NULL;   
    }   
    if(strKey!=NULL)   
    {   
        for(DWORD i=0;i<dwSectionNum;i++)   
        {   
            if(strKey[i]!=NULL)   
            {   
                delete [] strKey[i];   
                strKey[i]=NULL;   
            }   
        }   
        delete [] strKey;   
    }   
    if(lpIniKey!=NULL)   
    {   
        for(DWORD i=0;i<dwTotalKeyNum;i++)   
        {   
            delete lpIniKey[i];   
            lpIniKey[i]=NULL;   
        }   
        delete [] lpIniKey;   
        lpIniKey=NULL;   
    }   
    dwSectionNum=0;   
    dwTotalKeyNum=0;   
    strProfileName="";   
    return TRUE;   
}   
   
BOOL CINIMANGER::Save()   
{   
    if(strProfileName=="") return FALSE;   
    //检查INI文件    
    HANDLE hFile=CreateFile(strProfileName.GetBuffer(strProfileName.GetLength()),GENERIC_WRITE|GENERIC_READ,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,NULL);   
    CloseHandle(hFile);   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        WritePrivateProfileString(lpIniKey[i]->Section.GetBuffer(MAX_PATH),\   
                                    lpIniKey[i]->Key.GetBuffer(MAX_PATH),\   
                                    lpIniKey[i]->Value.GetBuffer(MAX_PATH),\   
                                    strProfileName.GetBuffer(MAX_PATH));   
    }   
    return TRUE;   
}   
   
CString CINIMANGER::GetKey(CString strSection,CString strKey,CString strDefault)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
            return lpIniKey[i]->Value;   
    }   
    return strDefault;   
}   
   
int CINIMANGER::GetKey(CString strSection,CString strKey,int iDefault)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
        {   
            int iReturn=atoi(lpIniKey[i]->Value.GetBuffer(MAX_PATH));   
            return iReturn;   
        }   
    }   
    return iDefault;   
}   
   
void CINIMANGER::SetKey(CString strSection,CString strKey,CString strValue)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
        {   
            lpIniKey[i]->Value=strValue;   
            return;   
        }   
    }   
    lpIniKey[dwTotalKeyNum]=new INIKEY;   
    lpIniKey[dwTotalKeyNum]->Section=strSection;   
    lpIniKey[dwTotalKeyNum]->Key=strKey;   
    lpIniKey[dwTotalKeyNum]->Value=strValue;   
    dwTotalKeyNum++;   
    for(DWORD j=0;j<dwSectionNum;j++)   
    {   
        if(strSection==this->strSection[j])   
        {   
            dwKeyNum[j]++;   
            return;   
        }   
    }   
    dwSectionNum++;   
    dwKeyNum[dwSectionNum-1]++;   
    return;   
}   
   
void CINIMANGER::SetKey(CString strSection,CString strKey,int iValue)   
{   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
    {   
        if(strSection==lpIniKey[i]->Section&&strKey==lpIniKey[i]->Key)   
        {   
            lpIniKey[i]->Value.Format("%d",iValue);   
            return;   
        }   
    }   
    lpIniKey[dwTotalKeyNum]=new INIKEY;   
    lpIniKey[dwTotalKeyNum]->Section=strSection;   
    lpIniKey[dwTotalKeyNum]->Key=strKey;   
    lpIniKey[dwTotalKeyNum]->Value=iValue;   
    dwTotalKeyNum++;   
    for(DWORD j=0;j<dwSectionNum;j++)   
    {   
        if(strSection==this->strSection[j])   
        {   
            dwKeyNum[j]++;   
            return;   
        }   
    }   
    dwSectionNum++;   
    dwKeyNum[dwSectionNum-1]++;   
    return;   
}   
   
int CINIMANGER::GetSectionNum()   
{   
    return dwSectionNum;   
}   
   
int CINIMANGER::GetTotalKeyNum()   
{   
    return dwTotalKeyNum;   
}   
   
int CINIMANGER::GetSectionKeyNum(CString strSection)   
{   
    for(DWORD i=0;i<dwSectionNum;i++)   
    {   
        if(this->strSection[i]==strSection) return dwKeyNum[i];   
    }   
    return 0;   
}   
   
CString CINIMANGER::GetProfileName()   
{   
    return strProfileName;   
}   
   
int CINIMANGER::EnumSection(CString* strSection,int nMaxNum)   
{   
    if((int)dwSectionNum>nMaxNum) return -1;   
    for(DWORD i=0;i<dwSectionNum;i++)   
        strSection[i]=this->strSection[i];   
    return dwSectionNum;   
}   
   
int CINIMANGER::EnumKey(CString strSection,CString* strKey,int nMaxNum)   
{   
    for(DWORD i=0;i<dwSectionNum;i++)   
    {   
        if(this->strSection[i]==strSection)   
        {   
            if((int)dwKeyNum[i]>nMaxNum) return FALSE;   
            for(DWORD j=0;j<dwKeyNum[i];j++)   
                strKey[j]=this->strKey[i][j];   
            return dwKeyNum[i];   
        }   
    }   
    return -1;   
}   
   
int CINIMANGER::EnumAllValue(CString* strValue,int nMaxNum)   
{   
    if((int)dwTotalKeyNum>nMaxNum) return -1;   
    for(DWORD i=0;i<dwTotalKeyNum;i++)   
        strValue[i]=lpIniKey[i]->Value;   
    return dwTotalKeyNum;   
}   


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值