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

Тема: Как узнать сколько элементов в массиве?

  1. #1

    Question Как узнать сколько элементов в массиве?

    Здравствуйте.
    Вот вопрос возник: как узнать количество элементов массива?

    Например в делфях есть функция High(A), а в кодесис я аналогичного не нашел.
    Очень хотелось при изменении программы только изменять кусок объявления массива, а в саму программу не лесть. И вообще количество элементов в массиве в ходе исполнения самой программы можно менять (аналог SetLength(A[I], I))?

  2. #2

    По умолчанию

    Проще всего константу объявить (глобально или локально - в примере ниже) и ее использовать в объявлении массива и в программе. Менять надо будет только саму константу.

    PROGRAM PLC_PRG
    VAR CONSTANT
    _iMyArrSize:INT:=12; (*Константа*)
    END_VAR
    VAR
    arr1 : ARRAY [0.._iMyArrSize] OF INT;
    Counter: INT;
    END_VAR

    FOR Counter:=1 TO _iMyArrSize BY 1 DO
    arr1[Counter] := Counter * 10;
    END_FOR;

  3. #3

    По умолчанию

    arrTel: ARRAY[0..3] OF STRING:='5689314354', '3135121684', '13135121684', '31345121684';
    само собой номера телефонов вымышленные :-)

    Вот хотелось в таком варианте использовать. Сразу объявить больше в саму программу не лазить.
    Есть вариант использовать SIZEOF иземерить массив разделить на размер элемента массива и тогда возможно получим количество элементов. Вот только этот вариант не подойдет для массива строк. Придется скорее всего остановится на вашем варианте если никто более толкового варианта не предложит.
    P. S. а вариант с SIZEOF это работать будет (хотя бы для массива DWORD)? Это так на будущее :-)

  4. #4

    По умолчанию

    Можно маркер в конце сделать (заранее известный элемент) и на него ориентироваться, но вариант Игоря Викторовича гораздо лучше. Сам его постоянно использую.

Ваши права

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