Просмотр полной версии : SIZEOF в codesys 2.3
Всем привет!
Что то у меня с функцией SIZEOF ерить творится
VAR_GLOBAL CONSTANT
stNameCmd : ARRAY[1..6] OF STRING := 'eAir' , 'inAir' , 'sInAir' , 'alarm', 'mode' , 'water' ;
END_VAR
В самой программе
test := SIZEOF(stNameCmd) ;
Почему то size возвращается какой-то жутко цифрой (вроде 486) . Что не так я делаю?
ну почему, почти совпадает, по умолчанию стринг занимает 80 байт, напишите STRING(20) размер уменьшится
ну почему, почти совпадает, по умолчанию стринг занимает 80 байт, напишите STRING(20) размер уменьшится
Так вот, что он выдает...
Вообще цель была - получить количество элементов массива. Т.е. я надеялся получить 6 .
в кдс гет понятия динамически расширяемый массив, какое кодичество задали такое и будет, в оскат это сделано проще, верхняя граница указана не цифрой а переменной, которая кпк раз и может являтся количеством элементов
в кдс гет понятия динамически расширяемый массив, какое кодичество задали такое и будет, в оскат это сделано проще, верхняя граница указана не цифрой а переменной, которая кпк раз и может являтся количеством элементов
Благодарю за помощь.
lara197a
29.10.2014, 13:33
но в кдс есть удобная фишка, в массиве можно в скобках использовать переменную
[N]
при обработке и цикле
получить количество элементов массиваSIZEOF(stNameCmd) / SIZEOF(stNameCmd[1])
Schneider
17.04.2023, 18:48
SIZEOF(stNameCmd) / SIZEOF(stNameCmd[1])
а как это работает? объясните. аааа, типа размер всего массива в байтах поделить на размер одного элемента получим размер ячеек в массиве.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot