查看: 1799|回复: 9
收起左侧

[应用问题] 关于可变数组长度问题

FlyingO 2021-10-26 15:21:44 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
C:\Users\28116\Desktop




上一篇:求一份汇川官方张力库TechHCTension使用demo
下一篇:请问codesys有没有改变速度倍率的方法?

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

FlyingO 2021-10-26 15:24:20 | 显示全部楼层
SIZEOF(Ary)/SIZEOF(Ary[0]);  获取可变数组长度,实际数组长度为10 ,获取长度为4,不知道是怎么回事。。。
回复 送花

使用道具 举报

loopsun 2021-10-26 18:29:17 | 显示全部楼层

SIZEOF返回的是变量占用的字节数,不是数组的元素个数。

官方文档出处: Operator ‘SIZEOF’

This operator is used for defining the number of bytes that are required by the variable x. The SIZEOF operator always yields an unsigned value. The type of return variable adapts to the detected size of the variable x.

对于可变数组,可以用UPPER_BOUND与LOWER_BOUND函数来获取可变数组的上边界与下边界,从而获取到可变数组长度。
官方文档出处: Data Type ‘ARRAY’

The SUM function adds the integer values of the array elements and returns the calculated sum as a result. The sum is calculated across all array elements available at runtime. The sum is calculated across all array elements available at runtime. As the actual number of array elements will only be known at runtime, the local variable is declared as a one-dimensional array of variable length.

FUNCTION SUM: INT;
VAR_IN_OUT
    aiData : ARRAY
  • OF INT; END_VAR VAR diCounter, diResult : DINT; END_VAR diResult := 0; FOR diCounter := LOWER_BOUND(aiData, 1) TO UPPER_BOUND(aiData, 1) DO // Calculates the length of the current array diResult := diResult + A[i]; END_FOR; SUM := diResult;
  • 回复 送花

    使用道具 举报

    FlyingO 2021-10-27 08:54:09 | 显示全部楼层
    哈沃克夫斯基 发表于 2021-10-26 17:05
    太高级了,什么语言的?

    st啊,自带的获取字节大小的函数SIZEOF();
    回复 送花

    使用道具 举报

    哈沃克夫斯基 2021-10-27 09:25:34 | 显示全部楼层
    FlyingO 发表于 2021-10-27 08:54
    st啊,自带的获取字节大小的函数SIZEOF();

    好的,学习了
    回复 送花

    使用道具 举报

    FlyingO 2021-10-27 17:24:55 | 显示全部楼层
    loopsun 发表于 2021-10-26 18:29
    [md]SIZEOF返回的是变量占用的字节数,不是数组的元素个数。

    官方文档出处: [Operator ‘SIZEOF’](https ...

        Index:=Sizeof(Ary)/Sizeof(Ary[0]); 这样获取数组长度,但是可变数组这样不行,不知道为什么,UPPER_BOUND 应该可以,感谢分享!。
    回复 送花

    使用道具 举报

    loopsun 2021-10-27 22:56:28 | 显示全部楼层
    本帖最后由 loopsun 于 2021-10-27 22:59 编辑

    SIZEOF可以直接获取数组长度吗?我这边测试只能获取到数组的占用字节,然后需要有一个除法计算,除以数组单个元素长度才能获取到数组的长度。

    我的问题,没有看清,你这边也是除了下单个元素的长度


    image.png
    回复 送花

    使用道具 举报

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

    本版积分规则

    楼主其他主题

    热点推荐

    有技术问题,就上汇川技术社区

    INOVANCE汇川技术 公众号

    扫码下载掌上汇川APP

    全国服务热线:8:30-17:30

    4000-300124

    苏州地址:江苏省苏州市吴中区越溪友翔路16号

    深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

    Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
    快速回复 返回列表 返回顶部