明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2321|回复: 4

请问怎么读取CAD的系统变量呀?

[复制链接]
发表于 2003-11-4 09:20:00 | 显示全部楼层 |阅读模式
我用下面的代码读取
const char *p=NULL;
p = acdbHostApplicationServices()->get >getEnv("LTSCALE");
if (p != NULL)
   acutPrintf("\n%s\n", p);
但读出来是空值呀,即那个p==NULL
怎么才能读出来?
thx
发表于 2003-11-4 09:55:00 | 显示全部楼层
你把指针p声明为const类型,除了NULL,还能得到什么?把声明中的那个const去掉试试。
acdbHostApplicationServices类的成员函数定义:
const char* getEnv(const char *var);
后一个const表示函体内不能修改var指针的内容,第一个const表示函数的返回值是不能被修改的(即只读的)。因为C++的重载机制,getEnv()有可能要重载,这种const限制是必须的。
象你的代码中那样用const,就要求在程序中指针p始终指向NULL。
不过,我有点奇怪,你的编译器竟允许你对const指针赋值。
发表于 2003-11-4 11:50:00 | 显示全部楼层
可以用下面的方法:

struct resbuf rb;
double dLTScale;
acedGetVar("LTSCALE",&rb);  
dLTScale=rb.resval.rreal;
 楼主| 发表于 2003-11-5 14:20:00 | 显示全部楼层
leeyeafu发表于2003-11-4 9:55:00你把指针p声明为const类型,除了NULL,还能得到什么?把声明中的那个const去掉试试。
acdbHostApplicationServices类的成员函数定义:
const char* getEnv(const char *var);
后一个cons



我想你是搞错了,const char* p是指不能修改p指向的空间,但可以对p赋值的,char* const p的话才是不能修改p的指向,但可以修改p指向的空间。像前面的,如果变成
char *p的话,后面就要在getEnv加上const_cast<char*>才能通过编译的。
 楼主| 发表于 2003-11-5 14:22:00 | 显示全部楼层
unionsoft发表于2003-11-4 11:50:00可以用下面的方法:

struct resbuf rb;
double dLTScale;
acedGetVar(&quot;LTSCALE&quot;,&rb);  
dLTScale=rb.resval.rreal;



thx a lot!!想不明白getEnv为什么不行,看帮助说明好像可以的呀,搞到要去用ads
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 21:32 , Processed in 0.166835 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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