- 积分
- 350
- 明经币
- 个
- 注册时间
- 2010-1-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()
->getSymbolTable(pBlockTable, AcDb::kForRead);
AcDbBlockTableRecord* pBlockTableRecord;
AcDbBlockTableIterator *pBlterator;
pBlockTable->newIterator(pBlterator);
pBlockTable->close();
//利用循环结构和块表浏览器遍历块表
addline();
for (pBlterator->start();!pBlterator->done();pBlterator->step())
{
pBlterator->getRecord(pBlockTableRecord,AcDb::kForRead);
}
delete pBlterator;
pBlterator = NULL;
pBlockTableRecord->close();
addline();
addline()是添加一条直线的代码,在第一次执行时,没有问题
最后一行再次执行报错,跟踪了一下,只读打开时地址有效,在写打开数据库时pBlockTableRecord地址失效,变成0X000000
发现是执行pBlterator->getRecord(pBlockTableRecord,AcDb::kForRead)的缘故,如果去掉这一句,就没有问题,各位大大,怎么回事呢?
|
|