-
Пользователь
Как узнать сколько элементов в массиве?
Здравствуйте.
Вот вопрос возник: как узнать количество элементов массива?
Например в делфях есть функция High(A), а в кодесис я аналогичного не нашел.
Очень хотелось при изменении программы только изменять кусок объявления массива, а в саму программу не лесть. И вообще количество элементов в массиве в ходе исполнения самой программы можно менять (аналог SetLength(A[I], I))?
-
Проще всего константу объявить (глобально или локально - в примере ниже) и ее использовать в объявлении массива и в программе. Менять надо будет только саму константу.
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;
-
Пользователь
arrTel: ARRAY[0..3] OF STRING:='5689314354', '3135121684', '13135121684', '31345121684';
само собой номера телефонов вымышленные :-)
Вот хотелось в таком варианте использовать. Сразу объявить больше в саму программу не лазить.
Есть вариант использовать SIZEOF иземерить массив разделить на размер элемента массива и тогда возможно получим количество элементов. Вот только этот вариант не подойдет для массива строк. Придется скорее всего остановится на вашем варианте если никто более толкового варианта не предложит.
P. S. а вариант с SIZEOF это работать будет (хотя бы для массива DWORD)? Это так на будущее :-)
-
Можно маркер в конце сделать (заранее известный элемент) и на него ориентироваться, но вариант Игоря Викторовича гораздо лучше. Сам его постоянно использую.
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума