找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 514|回复: 5

[求助]:数据到“词典”问题

[复制链接]
发表于 2002-10-15 17:22:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我爱网上看到一篇文章是保存数据到“词典”里,代码如下。我觉得代码里pdict=new AcDbDictionary; 可是最后并没有delete pdict,究竟要不要delete pdict?

int csetup::createdict()
{CString temp;
AcDbDictionary *pnamedobj;
Acad::ErrorStatus es;
es=acdbCurDwg()->getNamedObjectsDictionary(pnamedobj,AcDb::kForWrite);
if(es!= Acad::eOk)
return 0;
AcDbDictionary *pdict;
pdict=new AcDbDictionary;
if(pnamedobj->getAt("XLX_DICT",(AcDbObject *&)pdict,AcDb::kForRead)==Acad::eKeyNotFound)
{

AcDbObjectId dictid;
pnamedobj->setAt("XLX_DICT",pdict,dictid);
}
pnamedobj->close();
AcDbXrecord *pxdata1=new AcDbXrecord;
AcDbObjectId xdataid;
pdict->setAt("CHANSHU",pxdata1,xdataid);
pdict->close();
struct resbuf *xhead;
temp.Format("%f",m_bili);
xhead=ads_buildlist(AcDb::kDxfText,temp,0);
pxdata1->setFromRbChain(*xhead);
ads_relrb(xhead);
pxdata1->close();
return 1;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2002-10-15 17:24:22 | 显示全部楼层
另外AcDbXrecord *pxdata1=new AcDbXrecord; 程序最后是否应delete pxdata1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-15 17:46:55 | 显示全部楼层

Re: [求助]:数据到“词典”问题

最初由 xulpec 发布
[B]我爱网上看到一篇文章是保存数据到“词典”里,代码如下。我觉得代码里pdict=new AcDbDictionary; 可是最后并没有delete pdict,究竟要不要delete pdict?

int csetup::createdict()
{CString temp;
AcDbDictiona... [/B]


上面的代码应该是往词典XLX_DICT里面加扩展记录pxdata1

上面代码初看下,有问题

1、pdict=new AcDbDictionary; 这行应该加到IF语句里面,KEY没有发现时候,创建一个词典。

2、key没有发现,新建的词典,应该有相应的代码添加到“命名对象词典”下,现在没有。

3、扩展记录应该有代码添加到词典pdict中,程序里面也没有相应代码

如果程序的目的是我上面说的,那么不用delete pxdata1,添加到词典后,ACAD负责管理了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-15 21:00:00 | 显示全部楼层
如果不delete pdict,不会产生指内存泄露?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-15 21:15:56 | 显示全部楼层
最初由 xulpec 发布
[B]如果不delete pdict,不会产生指内存泄露? [/B]


上贴我说过了,从它的函数名字看,是要创建词典(没有创建,就是你看到的NEW),然后添加扩展记录。

他的代码缺,最后应该把创建的词典(如果NEW了),要添加到“命名对象词典”中,添加后,ACAD负责管理了(最后不要DELETE)。

如果不是我说的目的,那他那个代码创建PDICT就没有意义了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-15 21:34:44 | 显示全部楼层
我好象在那儿看到说arx里尽量调用autocad本身的命令,所这样程序比较稳定。所以我的程序里基本上都是类似acedCommand(RTSTR,"LINE",RTPOINT,pt2,RTPOINT,pt4,RTSTR,"",0);的代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 19:58 , Processed in 0.606660 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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