读书人

MFC使用CString的有关问题

发布时间: 2012-09-23 10:28:10 作者: rapoo

MFC使用CString的问题
部分源码:

C/C++ code
CStringArray strarray;//---------------------------------FullName=strarray.GetAt(FCount);CString TempString,strBuff;TempString=FullName.Mid(FullName.ReverseFind('\\')+1);E_FileName=FPath+TempString.Mid(0,TempString.ReverseFind('.'))+".log";OutputFiles="";OutputFiles=FPath+TempString.Mid(0,TempString.ReverseFind('.')-1)+"_";//<----Error


使用For循环跑下面的部分时?第一次都正常?第二次后运行到OutputFiles就会出现?

错误讯息是:
Debug Error!

Program: C:\AAA.exe
DAMAGE:after Normal block(#17745) at 0x017B97C8

查了网路上文章都说是CString溢出?请问这要怎解决?谢谢?

[解决办法]
你调试下TempString.ReverseFind('.')的返回值多少吧
[解决办法]
CString sName = TempString.Mid(0,TempString.ReverseFind('.')-1);
E_FileName=FPath+sName+"log";
OutputFiles=FPath+sName+"_";
这样错不错?


[解决办法]
CString 跟 "" 混合都没有使用 _T()
[解决办法]
OutputFiles=FPath+TempString.Mid(0,TempString.ReverseFind('.')-1)+"_";
把TempString.ReverseFind('.')拿出来,把上面这句变成两句呢?
int nindex = TempString.ReverseFind('.');
OutputFiles=FPath+TempString.Mid(0,nindex-1)+"_";
[解决办法]
2012-09-07 04:40:49

楼主你神人啊。
[解决办法]
探讨

写VB写久了会忘记VC的特点?就是运行时错误的地方?
绝对不会是需要更改的地方?编译时出错的地方?
也不一定是真正有错的地方?这就是VB和VC最大的差异吧?
话说我把那段改成:

C/C++ code

CString TempString,strBuff;
char ABC[256]={0};
TempString=FullName.Mid(FullName.ReverseFind……

[解决办法]
TempString,strBuff用完也Empty()一下。

读书人网 >VC/MFC

热点推荐