作者 | 主题 |
---|---|
'Razor 至圣 经验值:20115 发帖数:2773 精华帖:23 |
楼主 2019-11-12 22:53:44
主题:利用Variant参数数据类型实现获取数组大小/长度的FB“sizeOf 学习Variant,做了个小FB,调用获取数组的元素个数和元素类型: 主程序, FB4接口, FB4内部实现,数组支持的元素类型没有完全列出,可以在case... of语句下继续添加, 背景数据块, 测试数组来源数据块, 应用: 通过调用FB4获得数组的大小/长度,以及元素的类型,为后续对数组进行的一系列查找、计算、排序等操作打下了基础。
Less is more……
|
'Razor 至圣 经验值:20115 发帖数:2773 精华帖:23 |
4楼 2019-11-16 12:35:36
主题:回复:利用Variant参数数据类型实现获取数组大小/长度的FB“sizeOf 多谢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指令划算些,毕竟一条指令就能覆盖很多类型。
Less is more……
|