- UID
- 3684
- 积分
- 844
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-4-8
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
帮我看看下面的程序:
它主要时把xrecord的数据读出并返回resbuf.
问题1:Buf[255]无法释放.
问题2:把Buf[255]修改为指针型变量出错.
具体:修改为,struct resbuf* pBuf[255];
程序这里出错:pIterator->getCurResbuf(&pBuf,(AcDbDatabase*&) pXrecord);
还有什么不足之处,请大家帮忙找找.
============================================================================
struct resbuf
Xrecord_Get_rbChain(const char * pszDict,const char * pszKey)
{
// if (!pszKey) return NULL;
// if (!pszDict) return NULL;
AcDbDictionary *pNameObj,*pDict;
//打开命名字典
if (acdbCurDwg()->getNamedObjectsDictionary(pNameObj,AcDb::kForRead)!=Acad::eOk)
{
// return NULL;
}
//打开子字典
if (pNameObj->getAt(pszDict,(AcDbObject*&)pDict,AcDb::kForRead)==Acad::eKeyNotFound)
{
pNameObj->close();
// return NULL;
}
pNameObj->close();
//打开Xrecord
AcDbXrecord *pXrecord;
pDict->getAt(pszKey, (AcDbObject*&) pXrecord, AcDb::kForRead);
pDict->close();
struct resbuf Buf[255],outitem;
AcDbXrecordIterator *pIterator= new AcDbXrecordIterator(pXrecord);
pXrecord->close();
int i;
for (i = 0;!pIterator->done();i++,pIterator->next())
{
pIterator->getCurResbuf(Buf,(AcDbDatabase*&) pXrecord);
Buf.rbnext=&Buf[i+1];
}
Buf.rbnext=NULL;
outitem=Buf[0];
delete pIterator;
// for (i=0;i<=255;i++)
// {
// acutRelRb(&Buf);
// }
return outitem;
} |
|