解决方案 »

  1.   

    谢谢,这个  、、是我的错误!我在说一下我的疑惑,怎么才能遍历ini文件中每个section下的value或者key?
      

  2.   

    有windows api我记不清了,好像是 profile 之类的。
      

  3.   

    你是既不知道有多少个sesion 也不知道每个sesion下有多少个value?
    网上看到一个函数 应该管事儿
    01.void EnumIniFile(LPCTSTR pFilePath)  
    02.{  
    03.    // TODO: Add your control notification handler code here  
    04.    TCHAR strAppNameTemp[1024];//所有AppName的返回值  
    05.    TCHAR strKeyNameTemp[1024];//对应每个AppName的所有KeyName的返回值  
    06.    TCHAR strReturnTemp[1024];//返回值  
    07.    DWORD dwKeyNameSize;//对应每个AppName的所有KeyName的总长度  
    08.    //所有AppName的总长度  
    09.    DWORD dwAppNameSize = GetPrivateProfileString(NULL,NULL,NULL,strAppNameTemp,1024,pFilePath);  
    10.    if(dwAppNameSize>0)  
    11.    {  
    12.        TCHAR *pAppName = new TCHAR[dwAppNameSize];  
    13.        int nAppNameLen=0;  //每个AppName的长度  
    14.        for(int i = 0;i<dwAppNameSize;i++)  
    15.        {  
    16.            pAppName[nAppNameLen++]=strAppNameTemp[i];  
    17.            if(strAppNameTemp[i]=='/0')  
    18.            {  
    19.                OutputDebugString(pAppName);  
    20.                OutputDebugString(_T("/r/n"));  
    21.                dwKeyNameSize = GetPrivateProfileString(pAppName,NULL,NULL,strKeyNameTemp,1024,_T("test.INI"));  
    22.                if(dwAppNameSize>0)  
    23.                {  
    24.                    TCHAR *pKeyName = new TCHAR[dwKeyNameSize];  
    25.                    int nKeyNameLen=0;    //每个KeyName的长度  
    26.                    for(int j = 0;j<dwKeyNameSize;j++)  
    27.                    {  
    28.                          
    29.                        pKeyName[nKeyNameLen++]=strKeyNameTemp[j];  
    30.                        if(strKeyNameTemp[j]=='/0')  
    31.                        {  
    32.                            OutputDebugString(pKeyName);  
    33.                            OutputDebugString(_T("="));  
    34.                            if(GetPrivateProfileString(pAppName,pKeyName,NULL,strReturnTemp,1024,pFilePath))  
    35.                                OutputDebugString(strReturnTemp);  
    36.                            memset(pKeyName,0,dwKeyNameSize);  
    37.                            nKeyNameLen=0;  
    38.                            OutputDebugString(_T("/r/n"));  
    39.                        }  
    40.                    }  
    41.                    delete[]pKeyName;  
    42.  
    43.                }  
    44.                memset(pAppName,0,dwAppNameSize);  
    45.                nAppNameLen=0;  
    46.            }  
    47.        }  
    48.        delete[]pAppName;  
    49.    }  
    50.}