明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1728|回复: 0

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

[复制链接]
发表于 2007-3-14 18:18:00 | 显示全部楼层 |阅读模式

我编制了一个文字连接程序,编译链接均正常,但在CAD调入运行时出现严重错误,造成系统崩溃,请各位帮忙查找错误.

//====连接文字=======================================================
void join::jointxt(ads_name text,ads_name text1)
{
  struct resbuf *la,*ed,*ep;
  TCHAR textstr[1001],textstr1[1001],tmp[2001],tmp1[1001],*txt=_T(""),*txt1=_T("");//*txt=new TCHAR[1001],*txt1=new TCHAR[1001];
  ads_real textrz,dist;
  ads_point pick,p1,p2,pt1,pt2,pp;
  int len,len1;

  ed=acdbEntGet(text1);          //取得后续实体参数集
  la=entitem(ed,1);           //获得文本串的内容
  _tcscpy(textstr1,la->resval.rstring);
  ed=acdbEntGet(text);          //取得基准实体参数集
  la=entitem(ed,1);           //获得文本串的内容
  _tcscpy(textstr,la->resval.rstring);
  acedTextBox(ed,pt1,pt2);
  la=entitem(ed,10);          //获得文本的插入点
  pick[0]=la->resval.rpoint[0];
  pick[1]=la->resval.rpoint[1];
  la=entitem(ed,50);          //获得文本的旋转角度
  textrz=la->resval.rreal;
  len=_tcslen(textstr);
  len1=_tcslen(textstr1);
  if(len<1001 && len1<1001)
  {
   txt1=str_trimleft(textstr1);        //删除字串头部换行符、TAB符以及空格
   txt1=str_trimright(txt1);        //删除字串尾部换行符、TAB符以及空格
   txt1=spacecntrl_strtrim(txt1);
   _tcscpy(tmp1,txt1);
   txt=str_trimleft(textstr);        //删除字串头部换行符、TAB符以及空格
   ep=strrealloc(ed,txt);         //重新分配内存
   acedTextBox(ep,p1,p2);
   dist=acutDistance(p2,pt2);
   acutPolar(pick,textrz,dist,pp);       //计算下一个单字的插入点
   pick[0]=pp[0];
   pick[1]=pp[1];
   la=entitem(ep,10);
   la->resval.rpoint[0]=pick[0];
   la->resval.rpoint[1]=pick[1];
   txt=str_trimright(txt);         //删除字串尾部换行符、TAB符以及空格
   txt=spacecntrl_strtrim(txt);
   _tcscpy(tmp,txt);
   _tcscat(tmp,tmp1);
   ep=strrealloc(ed,tmp);
   acdbEntDel(text1);
   acdbEntMod(ep);           //程序运行至此完蛋?
   acutRelRb(ed);
//   delete txt,txt1;
  }
  else
  {
   acedAlert(_T("字串太长,不能超过1000个字符!"));
   acutRelRb(ed);
  }
}
//=====主程序========================================================
void join::txtmjoin()
{
  int old1,old2,new1,new2;
  ads_name ename,ename1;
  ads_point ptres;
  struct resbuf *etype,*tlist;

  new1=0;new2=0;
  change_var(_T("blipmode"),new1,&old1);
  change_var(_T("cmdecho"),new2,&old2);
  if(acedEntSel(_T("\n请拾取基准文字串:\n"),ename,ptres)!=RTCAN)
  {
   tlist=acdbEntGet(ename);
   etype=entitem(tlist,0);
   if(etype!=NULL && (_tcscmp(etype->resval.rstring,_T("TEXT")))==0)
   {
    if(acedEntSel(_T("\n再拾取后续文字串:\n"),ename1,ptres)!=RTCAN)
 {
     tlist=acdbEntGet(ename1);
     etype=entitem(tlist,0);
     if(etype!=NULL && (_tcscmp(etype->resval.rstring,_T("TEXT")))==0)
  {
      jointxt(ename,ename1);
  }
     else
  {
      acdbFail(_T("\n未选中文本实体"));
  }
 }
    else
    {
     acdbFail(_T("用户中断\n"));
    }
   }
   else
   {
    acdbFail(_T("\n未选中文本实体"));
   }
  }
  else
  {
   acdbFail(_T("用户中断\n"));
  }
  acutRelRb(tlist);
  change_var(_T("blipmode"),old1,&new1);
  change_var(_T("cmdecho"),old2,&new2);
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:23 , Processed in 0.148091 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表