在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: Williams00

[求助] skill atof函数返回值问题

[复制链接]
发表于 2021-8-19 12:45:04 | 显示全部楼层
你的问题的根源是 geGetSelSet()~>prop 最好不要像你这样用,有时候会返回正确值,有时候就是nil, 取决于你选择到的objects的情况。
 楼主| 发表于 2021-8-19 20:16:33 | 显示全部楼层


yulizi 发表于 2021-8-19 11:38
多了  car   吧


没有多car 少了一个语句
 楼主| 发表于 2021-8-19 20:22:23 | 显示全部楼层


amodaman 发表于 2021-8-19 12:45
你的问题的根源是 geGetSelSet()~>prop 最好不要像你这样用,有时候会返回正确值,有时候就是nil, 取决于你 ...


多谢大神的回答
现在还有点问题 就是下面两段语句 上面语段打印的是nil 下面语段打印的是正常的;跟我之前的理解不一样 不应该都打印出想要的值吗
image.png


发表于 2021-8-20 05:32:07 | 显示全部楼层
上面的代码中inst~>prop~>l 返回的结果是浮点数,yong car() 函数当然会导致nil。

下面的代码中,inst本身是一个list,inst~>prop~>l 返回的是list中所有元素的prop属性下的l属性,也是一个list,所以car()函数在此可以工作。

这两段代码在inst变量上是完全不同的性质,根本原因是不了解geGetSelSet()到底返回什么没搞清楚。即便是下面的代码可以工作,这也是一笔糊涂账,不建议这么写代码。
 楼主| 发表于 2021-8-20 09:26:58 | 显示全部楼层


amodaman 发表于 2021-8-20 05:32
上面的代码中inst~>prop~>l 返回的结果是浮点数,yong car() 函数当然会导致nil。

下面的代码中,inst本身 ...


image.png
inst~>prop~>l返回的是nil和1e-06组成的list

我昨天晚上看了geGetSelSet() 返回的也是list

CIW里面试了几下还是不行,这个要怎么改呢?



发表于 2021-8-20 11:46:53 | 显示全部楼层
这就是我说的问题,你这么用inst~>prop~>l 当然会出现这么多个nil, 因为你选的objects里面就有这么多是根本没有这个属性的。
发表于 2021-8-20 11:50:08 | 显示全部楼层
本帖最后由 amodaman 于 2021-8-20 13:45 编辑

insts = geGetSelSet()
foreach (inst insts
  when( prop_L = car(setof( x inst~>prop x~>name=="l"))        printf("Name: %s\t  value: %f\n" inst~>name prop_L~>value)
  ) ;; when
) ;; foreach

再次修改了代码。
 楼主| 发表于 2021-8-20 12:51:39 | 显示全部楼层


amodaman 发表于 2021-8-20 11:50
insts = geGetSelSet()
foreach (inst insts
  when( inst~>prop~>l  printf("Name: %s\t l value: %f\n"  ...


image.png

这一段代码输出有异常;
回到我原始的问题 其实就是下面这一段程序,运行的时候提示atof的argument必须是string,去掉atof我觉得应该也行 去掉的话就出现前面我遇到的问题 inst_l这些参数一直返回nil


  •                cv = geGetEditCellView(getCurrentWindow())
  •                tech = techGetTechFile(cv)
  •                instList = geGetSelSet()
  •                foreach(inst instList
  •                        inst_fl = atof(car(last(inst~>prop~>l)));get instance l\
  •                                 prop=information in properties\
  •                                 atof is change to float   from Character string\
  •                                 atoi is change to integer from Character string
  •                        if( (inst_fl >= 100) then inst_fl = inst_fl / 1000 )
  •                        inst_fw = atof(car(last(inst~>prop~>fw)));get instance fw
  •                        fingers = atof(car(last(inst~>prop~>fingers)));get instance fingers
  •                        inst_l = inst_fl * fingers + (fingers - 1) * FingersPolySpace
  •                        xy = inst~>xy


发表于 2021-8-20 13:42:45 | 显示全部楼层
对,我也糊涂了。

你的代码中 inst~>prop~>fw 是不行的。 因为inst有很多个属性,所以 inst~>prop 本身就返回了一个list, 是属性的列表;在这组列表元素里面,不论青红皂白就去取 fw属性,是不行的,会返回一系列的nil. 所以 atof 函数当然就失败了。可以改成:

atof( car( setof( x inst~>prop x~>name=="fw") )~>value )

 楼主| 发表于 2021-8-20 14:37:26 | 显示全部楼层


amodaman 发表于 2021-8-20 13:42
对,我也糊涂了。

你的代码中 inst~>prop~>fw 是不行的。 因为inst有很多个属性,所以 inst~>prop 本身就 ...


image.png
这样写还是提示atof的参数问题

我把atof函数去掉改成下面的形式 提示下面的错误
image.png

image.png


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

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-30 10:37 , Processed in 0.023718 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表