Тип Функция : INT Входы PT1 : POINTER (Адрес первого буфера) SIZE1 : INT (Размер первого буфера) PT2 : POINTER (Адрес второго буфера) SIZE2 : INT (Размер второго буфера) START : INT (Смещение начала поиска) Выходы INT (найденная позиция)
Функция BUFFER_COMP проверяет, встречается ли содержимое массива PT2 в массиве PT1, начиная с позиции START. Если PT2 найдено в PT1, функция возвращает позицию в PT1, отсчитывая от 0. Если PT2 не найдено в PT1, возвращается -1. BUFFER_COMP также может быть использована для сравнения двух одинаковых по размеру массивов. При вызове функции ей передаются указатели на обрабатываемые массивы и их размеры в байтах. В CoDeSys вызов выглядит следующим образом: BUFFER_COMP(ADR(BUF1), SIZEOF(BUF1), ADR(BUF2), SIZEOF(BUF2)), где BUF1 и BUF2 - имена обрабатываемых массивов. ADR является стандартной функцией, которая возвращает указатель на массив, а SIZEOF - стандартная функция, которая вычисляет размер массива. Функция всегда возвращает TRUE. Заданный при помощи указателя массив будет обрабатываться непосредственно в памяти. Этот способ обработки массива является очень эффективным, поскольку не требует дополнительной памяти, и передаваемые значения не нужно копировать. Пример: BUFFER_COMP(ADR(BUF1), SIZEOF(BUF1), ADR(BUF2), SIZEOF(BUF2)) |
