Debug Assertion Failed! Program:(我编的程序的exe文件的路径) File:strex.cpp Line:332 然后我找到出错

LONGCSmarthome2Dlg::OnComm(WPARAMch,LPARAMport){m_strPortRXData2+=(char)ch;m_strEditD... LONG CSmarthome2Dlg::OnComm(WPARAM ch, LPARAM port)
{

m_strPortRXData2 += (char)ch;
m_strEditDisData = m_strPortRXData2;
UpdateData(FALSE); //将接收到的字符显示在接收编辑框中

以下设置信号灯状态
for(int i=0;i<4;i++)
{
if(m_strPortRXData2.Mid(i,1)=="1")
SetSwitchStatus(i+1,TRUE);
else
SetSwitchStatus(i+1,FALSE);
}
调用Mid函数 出现断言,怎么办?高手赐教!!
提示出错的那个断言函数如下:
CString CString::Mid(int nFirst, int nCount) const
{
// out-of-bounds requests return sensible things
if (nFirst < 0)
nFirst = 0;
if (nCount < 0)
nCount = 0;

if (nFirst + nCount > GetData()->nDataLength)
nCount = GetData()->nDataLength - nFirst;
if (nFirst > GetData()->nDataLength)
nCount = 0;

ASSERT(nFirst>=0);
ASSERT(nFirst+nCount<=GetData()->nDataLength);

// optimize case of returning entire string
if (nFirst == 0 && nFirst + nCount == GetData()->nDataLength)
return *this;

CString dest;
AllocCopy(dest, nCount, nFirst, 0);
return dest;
}
展开
 我来答
xjkstar
2011-11-02 · TA获得超过191个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:177万
展开全部
虽然LZ没有说明,我猜测是: ASSERT(nFirst+nCount<=GetData()->nDataLength);这里断言报错,LZ可以自己计算下,nFirst+nCount<=GetData()->nDataLength这个条件是否符合。一般来说就是字符串的长度计算出了问题,建议LZ用纸、笔手工推演一下。
百度网友112610644
2012-05-15
知道答主
回答量:9
采纳率:0%
帮助的人:4万
展开全部
release 模式下调试就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式