乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 80|回复: 5

[求助]数据字典问题, 出异常!!请指点谢谢!!!

[复制链接]

12

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2005-3-1 16:58:00 | 显示全部楼层 |阅读模式
我得到数据字典类时,出现异常,不知道为什么,谢谢,下面是代码.
                         AcDbDictionary *pNamedobj;
                         acdbHostApplicationServices()->workingDatabase()
                                                         ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
                         // Get a pointer to the ASDK_DICT dictionary.
                         //
                         AcDbDictionary *pDict;
                         pNamedobj->getAt("SCALE_DICT", (AcDbObject*&)pDict,
                                                         AcDb::kForRead);
                         pNamedobj->close();
                         // Get an iterator for the ASDK_DICT dictionary.
                         //
                         if (pDict == NULL) {//pDict不为空
                                                         ASSERT(0);
                                                         return;
                         }
                         AcDbDictionaryIterator* pDictIter= pDict->newIterator();//在这句后出现异常
                         BSCScaleClass *pMyCl;
                         
                         for (; !pDictIter->done(); pDictIter->next()) {
                                                         // Get the current record, open it for read, and
                                                         // print its data.
                                                         //
                                                         pDictIter->getObject((AcDbObject*&)pMyCl,
                                                                                         AcDb::kForRead);
                                                         pMyCl->gethScale(hs);
                pMyCl->getvScale(vs);
                                                         pMyCl->close();
                                                         acutPrintf("\nintval is:         %d", hs);
                         }
                         delete pDictIter;
                         pDict->close();
回复

使用道具 举报

4

主题

72

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2005-3-2 08:48:00 | 显示全部楼层
getAt和getObject要判断返回值,尤其是第一个getAt直接影响下边的程序运行,除非你的:
AcDbDictionary *pDict;
改为
AcDbDictionary *pDict=NULL;
当然是最好直接判断返回值是否为Acad::eOk,仔细看看联机帮助吧
回复

使用道具 举报

12

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2005-3-2 15:57:00 | 显示全部楼层
我把程序又改了一下,可还是有一些问题,版主再看一看给点意见!!谢谢
                         AcDbDictionary *pNamedobj;
                         acdbHostApplicationServices()->workingDatabase()
                                                         ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
                         AcDbDictionary *pDict;
        if (pNamedobj->getAt("SCALE_DICT", (AcDbObject*&) pDict,
                                                         AcDb::kForRead) == Acad::eOk)//程序运行通过,证明得到
                         {
                AcDbDictionaryIterator* pDictIter= pDict->newIterator();
                BSCScaleClass *pMyCl;
                if (pDictIter!= NULL) {
                        for (; !pDictIter->done(); pDictIter->next()) {//程序在这一行不进入循环,但里面的我看了有数据,至少有一个
                                // Get the current record, open it for read, and
                                // print its data.
                                //
                                if (pDictIter->getObject((AcDbObject*&)pMyCl,
                                        AcDb::kForRead)==Acad::eOk){
                                        pMyCl->gethScale(hs);
                                        pMyCl->getvScale(vs);
                                        pMyCl->close();
                                        acutPrintf("\nintval is:         %d", hs);
                                }
                        }
                }
        /*                pDictIter->next();
                        pDictIter->getObject((AcDbObject*&)pMyCl,
                                AcDb::kForRead);
                        pMyCl->gethScale(hs);
                        pMyCl->getvScale(vs);
                        pMyCl->close();
                        acutPrintf("\nintval is:         %d", hs);*/
                delete pDictIter;
        }
        pNamedobj->close();
                         pDict->close();请版主帮助,谢谢,!!!!!!
回复

使用道具 举报

12

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2005-3-4 15:03:00 | 显示全部楼层
跪求!!!
回复

使用道具 举报

12

主题

24

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2005-3-6 17:15:00 | 显示全部楼层
请高手指点!!
回复

使用道具 举报

28

主题

70

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
182
发表于 2005-3-6 19:12:00 | 显示全部楼层
你再检查检查其他地方 程序本身没有问题
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 06:55 , Processed in 0.189231 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表