回复:利用Variant参数数据类型实现获取数组大小/长度的FB“sizeOf

'Razor

西门子1847工业学习平台

  • 帖子

    3354
  • 精华

    42
  • 被关注

    225

论坛等级:至圣

注册时间:2008-03-31

钻石 钻石 如何晋级?

发布于 2019-11-16 12:35:36

4楼

展开查看
以下是引用Zane在2019-11-13 22:59:29的发言 >2楼

BOOL的数组,为啥数量一定是8?


另外,FB,UDT等均可作为数组单元,楼主是否没有做全?

多谢Z版指正,是我对指令的理解出现了错误,

就指令的描述看,使用VARIANT获取元素类型为bool的数组的元素个数有些力不从心,使用处理array[*]的求下限和上限的变量指令,LOWER_BOUND和UPPER_BOUND,倒是可行;两相比较,使用countOfElements指令可以不用指定数组元素类型(其实也隐式指定了BOOL以外的类型)和数组维度,使用起来简单,但是处理array[type of bool]时力有不及,得不出正确的数值,得到是以字节BYTE为基本单位的计数值(包含了填充元素);反观LOWER_BOUND和UPPER_BOUND指令,需要指定元素类型和数组维度,虽然稍显繁琐,却是能得到正确数值。我们权衡一下,如果已知数组的元素类型为BOOL,那还是使用ARRAY[*]、LOWER_BOUND和UPPER_BOUND方便,如果是BOOL类型以外的类型,还是使用CountOfElements指令划算些,毕竟一条指令就能覆盖很多类型。

少即是多
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15376条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。