我在硬盘下的配置文件如下:
[PreviewBlock]
bPreviewBlock=0
[BFrameNum]
dwBFrameNum=0
[DownLoadPath]
chDownLoadPath=c:\DownLoad
[PictureSavePath]
chPictureSavePath=c:\Picture
[ClientRecordPath]
chClientRecordPath=c:\;我读的时候是这样写的
CString buf="";
 GetPrivateProfileString("PreviewBlock","bPreviewBlock","",buf.GetBuffer(100),100,csFilename);GetPrivateProfileString("BFrameNum","dwBFrameNum","",buf.GetBuffer(100),100,csFilename);
g_struLocalParam.dwBFrameNum = atoi(buf);GetPrivateProfileString("DownLoadPath","chDownLoadPath","",buf.GetBuffer(100),100,csFilename);
strncpy(g_struLocalParam.chDownLoadPath,(LPCTSTR)buf,sizeof(g_struLocalParam.chDownLoadPath)); GetPrivateProfileString("PictureSavePath","chPictureSavePath","",buf.GetBuffer(100),100,csFilename);
strncpy(g_struLocalParam.chPictureSavePath,(LPCTSTR)buf,sizeof(g_struLocalParam.chPictureSavePath));GetPrivateProfileString("ClientRecordPath","chClientRecordPath","",buf.GetBuffer(100),100,csFilename);
strncpy(g_struLocalParam.chClientRecordPath,(LPCTSTR)buf,sizeof(g_struLocalParam.chClientRecordPath));调试时发现buf根本就没有取到值,还是空的

解决方案 »

  1.   

    换用这个函数试试看:
    CString buf=""; 
    GetPrivateProfileString("PreviewBlock","bPreviewBlock","",buf.GetBufferSetLength(100),100,csFilename); 之后别忘了buf.Release();
      

  2.   

    你前面两个应该用 
    GetPrivateProfileInt 读比较好
    后面的里面还是传 char szBuf[100]比较好些,我一般这样用的,没出过问题
    还有就是注意你的 csFilename 是否对了
      

  3.   

    MSDN上有详细的参考例子 分析一下看看
    #include <windows.h> 
    #include <tchar.h>
    #include <stdio.h> 
     
    int main() 

       TCHAR   inBuf[80]; 
       HKEY   hKey1, hKey2; 
       DWORD  dwDisposition; 
       LONG   lRetCode; 
       TCHAR   szData[] = TEXT("USR:App Name\\Section1");
     
       // Create the .ini file key. 
       lRetCode = RegCreateKeyEx ( HKEY_LOCAL_MACHINE, 
           TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\"
                "IniFileMapping\\appname.ini"), 
           0, 
           NULL, 
           REG_OPTION_NON_VOLATILE, 
           KEY_WRITE, 
           NULL, 
           &hKey1, 
           &dwDisposition); 
     
       if (lRetCode != ERROR_SUCCESS)
       { 
          printf ("Error in creating appname.ini key (%d).\n", lRetCode); 
          return (0) ; 
       } 
     
       // Set a section value 
       lRetCode = RegSetValueEx ( hKey1, 
                                  TEXT("Section1"), 
                                  0, 
                                  REG_SZ, 
                                  (BYTE *)szData, 
                                  sizeof(szData)); 
     
       if (lRetCode != ERROR_SUCCESS) 
       { 
          printf ("Error in setting Section1 value\n"); 
          // Close the key
          lRetCode = RegCloseKey( hKey1 );
          if( lRetCode != ERROR_SUCCESS )
          {
             printf("Error in RegCloseKey (%d).\n", lRetCode);
             return (0) ; 
          }
       } 
     
       // Create an App Name key 
       lRetCode = RegCreateKeyEx ( HKEY_CURRENT_USER, 
                                   TEXT("App Name"), 
                                   0, 
                                   NULL, 
                                   REG_OPTION_NON_VOLATILE,
                                   KEY_WRITE, 
                                   NULL, 
                                   &hKey2, 
                                   &dwDisposition); 
     
       if (lRetCode != ERROR_SUCCESS) 
       { 
          printf ("Error in creating App Name key (%d).\n", lRetCode);       // Close the key
          lRetCode = RegCloseKey( hKey2 );
          if( lRetCode != ERROR_SUCCESS )
          {
             printf("Error in RegCloseKey (%d).\n", lRetCode);
             return (0) ; 
          }
       } 
     
       // Force the system to read the mapping into shared memory 
       // so that future invocations of the application will see it 
       // without the user having to reboot the system 
       WritePrivateProfileStringW( NULL, NULL, NULL, L"appname.ini" ); 
     
       // Write some added values 
       WritePrivateProfileString (TEXT("Section1"), 
                                  TEXT("FirstKey"), 
                                  TEXT("It all worked out OK."), 
                                  TEXT("appname.ini")); 
       WritePrivateProfileString (TEXT("Section1"), 
                                  TEXT("SecondKey"), 
                                  TEXT("By golly, it works!"), 
                                  TEXT("appname.ini")); 
       WritePrivateProfileString (TEXT("Section1"), 
                                  TEXT("ThirdKey"), 
                                  TEXT("Another test..."), 
                                  TEXT("appname.ini"));    // Test 
       GetPrivateProfileString (TEXT("Section1"), 
                                TEXT("FirstKey"), 
                                TEXT("Error: GPPS failed"), 
                                inBuf, 
                                80, 
                                TEXT("appname.ini")); 
       _tprintf (TEXT("Key: %s\n"), inBuf); 
     
       // Close the keys
       lRetCode = RegCloseKey( hKey1 );
       if( lRetCode != ERROR_SUCCESS )
       {
          printf("Error in RegCloseKey (%d).\n", lRetCode);
          return(0);
       }   lRetCode = RegCloseKey( hKey2 );
       if( lRetCode != ERROR_SUCCESS )
       {
          printf("Error in RegCloseKey (%d).\n", lRetCode);
          return(0);
       }
       
       return(1); 
    }