PDA

Просмотр полной версии : Как узнать сколько элементов в массиве?



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

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

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

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;

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

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

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