в oscat_basic есть множество функций работы с массивами.
у большинства из них(может и у всех, не проверял) в начале есть строчка как в заголовке темы
весь текст ниже
вызов её выглядет такКод:FUNCTION ARRAY_MIN : REAL VAR_INPUT pt : POINTER TO ARRAY[0..32000] OF REAL; size : UINT; END_VAR VAR i: UINT; stop: UINT; END_VAR ------------------------- stop := (size - SIZEOF(pt)) / SIZEOF(pt); array_min := pt^[0]; FOR i := 1 TO stop DO IF pt^[i] < array_min THEN array_min := pt^[i]; END_IF; END_FOR;
X:=oscat_basic.ARRAY_MIN(ADR(some),SIZEOFF(some))
не понимаю как работает первая строчка,
к примеру some массив из 10 значений REAL
тогда на вход фунции попадет указатель на массив и число 40 (размер массива в байтах)
в коде функции получается
stop:=(40-40)/40
иии какой в этом смысл? но это работает же. в переменной stop в итоге размер массива(количество значений real)
что я не так понимаю?![]()


Ответить с цитированием
