看图就能明白关于调试的问题。。CString sFilePath = "D:" or sFilePath = "D:\1" CString Tmp(_T("\\*.*"));情况1 .sFilePath += Tmp;情况2 . sFilePath += _T("\\*.*");sFilePath 的值始终保持不变?请教这个是什么原因哪??

解决方案 »

  1.   


    if (sFilePath.Right(1) == _T("\\"))
    {
    sFilePath += _T("*.*");
    }
    else
    {
    sFilePath +=_T("\\*.*");
    }现在这样修改也不能真邪门了!!
      

  2.   

     下断点
    然后调试 按快捷键ALT+F8
      

  3.   


    m_sDisk += _T("(");
    m_sDisk += lpVolumeNameBuffer;
    m_sDisk += _T(") 类型:");同一个工程中这样使用也没有出错!!
      

  4.   


    sFilePath +=_T("\\*.*");
    0041620B  mov         esi,esp 
    0041620D  push        offset string L"*.*" (42FB24h) 
    00416212  lea         ecx,[ebp+8] 
    00416215  call        dword ptr [__imp_ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::operator+= (439DC4h)] 
    0041621B  cmp         esi,esp 
    0041621D  call        @ILT+3355(__RTC_CheckEsp) (411D20h) 
    请大家看看。。汇编代码。。
      

  5.   

    估计和你sFilePath之前的操作有关?发下较完整的代码,看下你之前是不是有处理过sFilePath 
      

  6.   

    OnInitListFolder(CString sFilePath)这个是只是一个传值,传来就直接使用了
      

  7.   

    OnInitListFolder(CString &sFilePath)
      

  8.   

    跟程序上下操作有关吧  看哪里是否GetBuffer 最好是Release一下
    CString 不太稳定 有时会出问题
      

  9.   

    CString sFilePath = "D:" or sFilePath = "D:\1"  
    这是ASCII码..你的工程设置里面都是UNICODE码吗?
      

  10.   

    你整个工程rebuild下试下。确定你的版本是debug版?还有你可以看下那个findfirst的结果对不对。有时候只是个显示问题。。
      

  11.   

    sFilePath.Format("%s%s",sFilePath,"\\*.*")试试
      

  12.   


    这种情况看了没?CString sFilePath  = _T("d:");
    sFilePath += _T("\\*.*"),