Показано с 1 по 8 из 8

Тема: SIZEOF в codesys 2.3

  1. #1

    По умолчанию 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) . Что не так я делаю?

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    ну почему, почти совпадает, по умолчанию стринг занимает 80 байт, напишите STRING(20) размер уменьшится
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ну почему, почти совпадает, по умолчанию стринг занимает 80 байт, напишите STRING(20) размер уменьшится
    Так вот, что он выдает...
    Вообще цель была - получить количество элементов массива. Т.е. я надеялся получить 6 .

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    в кдс гет понятия динамически расширяемый массив, какое кодичество задали такое и будет, в оскат это сделано проще, верхняя граница указана не цифрой а переменной, которая кпк раз и может являтся количеством элементов
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в кдс гет понятия динамически расширяемый массив, какое кодичество задали такое и будет, в оскат это сделано проще, верхняя граница указана не цифрой а переменной, которая кпк раз и может являтся количеством элементов
    Благодарю за помощь.

  6. #6
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    но в кдс есть удобная фишка, в массиве можно в скобках использовать переменную
    [N]
    при обработке и цикле

  7. #7
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    получить количество элементов массива
    SIZEOF(stNameCmd) / SIZEOF(stNameCmd[1])

  8. #8

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    SIZEOF(stNameCmd) / SIZEOF(stNameCmd[1])
    а как это работает? объясните. аааа, типа размер всего массива в байтах поделить на размер одного элемента получим размер ячеек в массиве.

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •