jxncxu 发表于 2007-3-14 18:18:00

[求助]请各位帮忙查找程序错误.

<p>我编制了一个文字连接程序,编译链接均正常,但在CAD调入运行时出现严重错误,造成系统崩溃,请各位帮忙查找错误.</p><p>//====连接文字=======================================================<br/>void join::jointxt(ads_name text,ads_name text1)<br/>{<br/>&nbsp; struct resbuf *la,*ed,*ep;<br/>&nbsp; TCHAR textstr,textstr1,tmp,tmp1,*txt=_T(""),*txt1=_T("");//*txt=new TCHAR,*txt1=new TCHAR;<br/>&nbsp; ads_real textrz,dist;<br/>&nbsp; ads_point pick,p1,p2,pt1,pt2,pp;<br/>&nbsp; int len,len1;</p><p>&nbsp; ed=acdbEntGet(text1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取得后续实体参数集<br/>&nbsp; la=entitem(ed,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得文本串的内容<br/>&nbsp; _tcscpy(textstr1,la-&gt;resval.rstring);<br/>&nbsp; ed=acdbEntGet(text);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取得基准实体参数集<br/>&nbsp; la=entitem(ed,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得文本串的内容<br/>&nbsp; _tcscpy(textstr,la-&gt;resval.rstring);<br/>&nbsp; acedTextBox(ed,pt1,pt2);<br/>&nbsp; la=entitem(ed,10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得文本的插入点<br/>&nbsp; pick=la-&gt;resval.rpoint;<br/>&nbsp; pick=la-&gt;resval.rpoint;<br/>&nbsp; la=entitem(ed,50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获得文本的旋转角度<br/>&nbsp; textrz=la-&gt;resval.rreal;<br/>&nbsp; len=_tcslen(textstr);<br/>&nbsp; len1=_tcslen(textstr1);<br/>&nbsp; if(len&lt;1001 &amp;&amp; len1&lt;1001)<br/>&nbsp; {<br/>&nbsp;&nbsp; txt1=str_trimleft(textstr1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//删除字串头部换行符、TAB符以及空格<br/>&nbsp;&nbsp; txt1=str_trimright(txt1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//删除字串尾部换行符、TAB符以及空格<br/>&nbsp;&nbsp; txt1=spacecntrl_strtrim(txt1);<br/>&nbsp;&nbsp; _tcscpy(tmp1,txt1);<br/>&nbsp;&nbsp; txt=str_trimleft(textstr);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//删除字串头部换行符、TAB符以及空格<br/>&nbsp;&nbsp; ep=strrealloc(ed,txt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//重新分配内存<br/>&nbsp;&nbsp; acedTextBox(ep,p1,p2);<br/>&nbsp;&nbsp; dist=acutDistance(p2,pt2);<br/>&nbsp;&nbsp; acutPolar(pick,textrz,dist,pp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//计算下一个单字的插入点<br/>&nbsp;&nbsp; pick=pp;<br/>&nbsp;&nbsp; pick=pp;<br/>&nbsp;&nbsp; la=entitem(ep,10);<br/>&nbsp;&nbsp; la-&gt;resval.rpoint=pick;<br/>&nbsp;&nbsp; la-&gt;resval.rpoint=pick;<br/>&nbsp;&nbsp; txt=str_trimright(txt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//删除字串尾部换行符、TAB符以及空格<br/>&nbsp;&nbsp; txt=spacecntrl_strtrim(txt);<br/>&nbsp;&nbsp; _tcscpy(tmp,txt);<br/>&nbsp;&nbsp; _tcscat(tmp,tmp1);<br/>&nbsp;&nbsp; ep=strrealloc(ed,tmp);<br/>&nbsp;&nbsp; acdbEntDel(text1);<br/>&nbsp;&nbsp; <font color="#ff3300">acdbEntMod(ep);</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#f70909">//程序运行至此完蛋?</font><br/>&nbsp;&nbsp; acutRelRb(ed);<br/>//&nbsp;&nbsp; delete txt,txt1;<br/>&nbsp; }<br/>&nbsp; else<br/>&nbsp; {<br/>&nbsp;&nbsp; acedAlert(_T("字串太长,不能超过1000个字符!"));<br/>&nbsp;&nbsp; acutRelRb(ed);<br/>&nbsp; }<br/>}<br/>//=====主程序========================================================<br/>void join::txtmjoin()<br/>{<br/>&nbsp; int old1,old2,new1,new2;<br/>&nbsp; ads_name ename,ename1;<br/>&nbsp; ads_point ptres;<br/>&nbsp; struct resbuf *etype,*tlist;</p><p>&nbsp; new1=0;new2=0;<br/>&nbsp; change_var(_T("blipmode"),new1,&amp;old1);<br/>&nbsp; change_var(_T("cmdecho"),new2,&amp;old2);<br/>&nbsp; if(acedEntSel(_T("\n请拾取基准文字串:\n"),ename,ptres)!=RTCAN)<br/>&nbsp; {<br/>&nbsp;&nbsp; tlist=acdbEntGet(ename);<br/>&nbsp;&nbsp; etype=entitem(tlist,0);<br/>&nbsp;&nbsp; if(etype!=NULL &amp;&amp; (_tcscmp(etype-&gt;resval.rstring,_T("TEXT")))==0)<br/>&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp; if(acedEntSel(_T("\n再拾取后续文字串:\n"),ename1,ptres)!=RTCAN)<br/>&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp; tlist=acdbEntGet(ename1);<br/>&nbsp;&nbsp;&nbsp;&nbsp; etype=entitem(tlist,0);<br/>&nbsp;&nbsp;&nbsp;&nbsp; if(etype!=NULL &amp;&amp; (_tcscmp(etype-&gt;resval.rstring,_T("TEXT")))==0)<br/>&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jointxt(ename,ename1);<br/>&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acdbFail(_T("\n未选中文本实体"));<br/>&nbsp; }<br/>&nbsp;}<br/>&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp; acdbFail(_T("用户中断\n"));<br/>&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp; }<br/>&nbsp;&nbsp; else<br/>&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp; acdbFail(_T("\n未选中文本实体"));<br/>&nbsp;&nbsp; }<br/>&nbsp; }<br/>&nbsp; else<br/>&nbsp; {<br/>&nbsp;&nbsp; acdbFail(_T("用户中断\n"));<br/>&nbsp; }<br/>&nbsp; acutRelRb(tlist);<br/>&nbsp; change_var(_T("blipmode"),old1,&amp;new1);<br/>&nbsp; change_var(_T("cmdecho"),old2,&amp;new2);<br/>}</p>
页: [1]
查看完整版本: [求助]请各位帮忙查找程序错误.