LPCTSTR StrValue=LPCTSTR(strSave);//strSave是CString类型
RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);
出错:“strlen”: 不能将参数 1 从“LPCTSTR”转换为“const char *”

解决方案 »

  1.   


    strlen(StrValue)改为 StrValue.GetLength()试试看。
      

  2.   

    error C2228: “.GetLength”的左边必须有类/结构/联合
      

  3.   

    LPCTSTR StrValue=(strSave);//strSave是CString类型
    RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);直接改为
    RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)(LPCTSTR)strSave,strSave.GetLength() + 1);
      

  4.   

    不好意思,写得有点问题
    RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE*)LPCTSTR(strSave),strSave.GetLength() + 1);
      

  5.   

    再不好意思一次……根据我的实验结果,还是应该这样
    最后一个参数不要加一了。RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE*)LPCTSTR(strSave),strSave.GetLength());
      

  6.   

    LPCTSTR StrValue=LPCTSTR(strSave);//strSave是CString类型
    RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,strlen(StrValue)+1);
    出错:“strlen”: 不能将参数 1 从“LPCTSTR”转换为“const char *”
    ////////////////////////////////////////////////////////////////////////////////////
    从出错提示可以看出,你的字符串用的应该是UNICODE,而strlen只是针对多字节的,在这里用的是宽字节,那就应该改用这个函数:_tcslen我觉得最终应该改成这个样子:
    RegSetValueEx(hkey,_T("Debugger"),0,REG_SZ,(BYTE *)(LPCSTR)StrValue,(_tcslen(StrValue) + 1) * sizeof(TCHAR));