解决方案 »

  1.   

    变量看过了,组合后路径中确实有两个\\获取路径的代码如下:
    TCHAR   szFull[_MAX_PATH];
    TCHAR   szDrive[_MAX_DRIVE];
    TCHAR   szDir[_MAX_DIR];
    ::GetModuleFileName(NULL, szFull, sizeof(szFull)/sizeof(TCHAR));
    _tsplitpath(szFull, szDrive, szDir, NULL, NULL);
    _tcscpy(szFull, szDrive);
    _tcscat(szFull, szDir);
    CString  szPath = _T("");
    szPath = CString(szFull);
    g_IniPath=szPath;
    g_szFileDir=CString(szFull)+_T("\\")+"file";
      

  2.   

    g_szFileDir=CString(szFull)+_T("\\")+"file"+_T("\\");
      

  3.   

    现在通过以下函数死活读取不到内容:
    CString sz1=""; 
    GetPrivateProfileString("park","para","nostr",sz1.GetBuffer(0),200,"D:\ParkClient\Debug\file\02.ini");02.ini里是有内容的,如下:
    [park]
    para=32&06&01&02&20140912100426310&金融理财&250&84&0&
    求原因,谢谢!
      

  4.   

    GetPrivateProfileString("park","para","nostr",sz1.GetBuffer(0),200,"D:\\ParkClient\\Debug\\file\\02.ini");
      

  5.   

    "D:\ParkClient\Debug\file\02.ini");这个是我调试的实际值,双斜杠我是知道的
      

  6.   

    有什么问题吗? 本来路径就是"D:\ParkClient\Debug\file\02.ini"
    但是你在源代码中却不能直接这么写成字符串常量,因为编译器会将字符串中的'\'解释成转义符,所以写字符串常量时必须用“\\”代替‘'\’---再次注意:只是在写源代码时需要这么替换,运行时不用--所以说"\\"是给编译器看的,编译结束就不用考虑这个了。
      

  7.   

    应该是
    CString sz1=""; 
    GetPrivateProfileString("park","para","nostr",sz1.GetBuffer(200),200,"D:\ParkClient\Debug\file\02.ini");
    吧?你原来打算取一块长度为0的内存然后告诉GetPrivateProfileString最多可以往里写200字节? 不出错才怪
      

  8.   


    晕  如何写?看红色的字~~记得读完后(使用sz1前)调用sz1.ReleaseBuffer();
      

  9.   

    可是我这样确实是可以读出来内容的
    GetPrivateProfileString("init","ip","127.0.0.1",szIP.GetBuffer(0),20,g_IniPath); 
    换成这样GetPrivateProfileString("park","para","nostr",sz1.GetBuffer(0),200,"D:\ParkClient\Debug\file\02.ini");
    就不行了,为何?
      

  10.   

    如果szIP以前有过内容,那么它已经存在内部内存可以直接返回(因为你只希望获得0字节内存,所以任何大小CString内部的内存都可以)。但是你sz1明明初始化成""了(内部使用内存还没有申请,或者只申请了很小一块用于存放'\0'字符)你GetBuffer(0)返回的就可能是null或很小一块内存,然后GetPrivateProfileString就写超了。
      

  11.   

    DWORD Err1=GetPrivateProfileString("park","para","nostr",sz1.GetBuffer(0),200,"D:\\ParkClient\\Debug\\file\\61.ini");  //可以读取

    DWORD rt=GetPrivateProfileString("park","para","nostr",sz1.GetBuffer(0),200,sz2); // sz2调试时的值为{"D:\ParkClient\Debug\file\61.ini"} 不可以读取

    DWORD Err=GetLastError();
    if (bConnectFlag)大神帮忙解惑,谢谢!!
      

  12.   

    原因找到了,先前我用open打开了这个文件,然后我再用GetPrivateProfileString去取文件里的数据,文件没有关闭,GetPrivateProfileString无法取到数据,所以读不出来。不是GetPrivateProfileString中参数的问题。结贴