[求助]ARX程序开发中出现的异常处理该如何解决
我是ARX的新手,创建一个函数,提示用户选择文件,获取文件中的圆,更改圆的颜色和直径,并将圆放回原文件,编译通过.但在AutoCAD中加载此ARX文件并运行时,提示:未处理的异常 C0000005 (Accecc Violation Reading Ox001c),地址6545F306h.请高手指教!
能否附上源文件?
原因如下
我原来也遇到了这个问题,一般这种情况主要是因为指针或者数组没有初始化造成的,或者是因为堆栈溢出。仔细检查你定义的指针和数组,给他们都初始化,然后你看看你的数组是不是太大了?改小一点儿。请多指教
你的错误,呵呵,让我费了半填劲
看你下面的代码:for (pWorkSetIter->start(); !pWorkSetIter->done();pWorkSetIter->step());*****这里怎么了?呵呵
{
AcDbEntity *pEntity;
acdbOpenAcDbEntity(pEntity,pWorkSetIter->objectId(),AcDb::kForWrite);
pEntity->setColorIndex(colorIndex);
((AcDbCircle *)pEntity)->setRadius(radius);
pEntity->close();
}
delete pWorkSetIter;
谢谢
多谢啦不客气,欢迎你经常来明经做客。
: )看了你的源程序,给点编程风格的意见
首先,你的程序写得不错,能实现你想要的功能(除了Z版主说的那个多余的分号外)。但整个程序中没有一句注释代码,大降低了程序的可读性。好的编程习惯是在编写代码的同时,加上必要的一些注释。另外,你在遍历块表记录的循环中使用这样的代码:
AcDbEntity *pEnt; //详细语句可能有点小差异
...
pEnt->close();
这样,块表中有多少实体对象,就要建立并析构多少次AcDbEntity对象。若将以上两行代码移到循环外部,并不影响程序的正确性,但它只需要建立和析构一次ADbEntity对象,可能你认为这对程序执行效率影响不大。(实际上,若用户打开的文件有很多AcDbEntity实体对象时,效率将明显降低。)但严重影响你的程序质量,不是吗?
长事务(Z版主建议翻译为“远程处理”,我认为“远程事务”可能更准确,不过这是另外一个话题)循环中也存在同样的问题。 *******************************************
AcDbEntity *pEnt; //详细语句可能有点小差异
...
pEnt->close();
*******************************************
上面两句不能放到外面,否则就错了,另外,放到外面性能并不能提高,AcDBEntity× pEnt是在栽中分配内存不是堆分配,内存的大小只有4个字节,对性能根本没有影响。
页:
[1]