Не смог быстро найти на форуме имеющиеся статьи по данному вопросу, поэтому пишу.
Подскажите, как можно сравнить значения массивов, не прибегая к помощи, написанным с помощью циклов ФБ?
Надеюсь вопрос понятен.
Не смог быстро найти на форуме имеющиеся статьи по данному вопросу, поэтому пишу.
Подскажите, как можно сравнить значения массивов, не прибегая к помощи, написанным с помощью циклов ФБ?
Надеюсь вопрос понятен.
if sysmemcmp(adr(массив1),adr(массив2),sizeof(массив1 )) <> 0 then ... //не равны
Я больше всего на этом форуме не понимаю подобное трепло, вроде Вольда.
Если есть, что написать по вопросу пиши, а нет иди трепись с подобными себе "наоборотами".
Я же написал, что не используя циклы.
Я знаю как при их помощи это сделать, не недавно натолкнулся на интересные примеры с использованием POINTER TO ARRAY,
но не очень понял логику их работы, вот и решил послушать кто, что может подсказать.
Данная функция сравнивает их размеры а не данные.
Я имел ввиду не равенство данных внутри массива.
Именно проверяет равенство данных внутри массивов
Захват-1.png
Для сравнения длины массивов достаточно было бы просто сравнить их длину sizeof(массив1 ) и sizeof(массив2 )
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Благодарю за ответ.
Всё работает. Спасибо.
Я долго пытался распарсить эту формулировку. Имеется в виду массив с ненулевой нижней границей? Но тогда что значит «не до конца»? Массивы всегда заполнены целиком по определению.массив заполненный не с начала и не до конца
Может, требуется определить A и B из arr: ARRAY[A..B] OF T? Но в языках 61131-3, во-первых, нет интроспекции; а во-вторых, A и B уже известны в любом контексте на этапе компиляции. Если проблема в том, что приходится указывать A и B несколько раз, сделайте их VAR CONSTANT.
Обнуляем некую переменную и переменную номер в структуре.
Циклически проверяем наличие в х,y,z нуля.
Если есть, увеличиваем некую переменную на один.
примерно так:
n:=0;
cn:=0;
FOR cN:= 0 TO 999 DO (*начинаем поиск*)
IF ARX[cN].Х=0 AND
ARX[cN].Y AND
ARX[cN].Z=0 THEN (*Если нашли,то*)
n:=N+1;
END_IF
cn:=cN+1;
END_FOR