Тип Функция : INT Входы PT : POINTER (Адрес буфера) SIZE : UINT (Размер буфера) STR : STRING (Искомая строка) POS : INT (Позиция, с которой начинается поиск) IGN: BYTE (Этот символ игнорируется при поиске) Выходы INT (Позиция, в которой строка символов была найдена) Функция BUFFER_SEARCH осуществляет поиск в произвольном байтовом массиве содержимого символьной строки, и сообщает позицию первого символа этой строки в массиве, если совпадение найдено. Буфер просматривается с произвольной позиции POS. Первый элемент массива имеет номер позиции 0. При вызове функции передается указатель на обрабатываемый массив и его размер в байтах. В CoDeSys вызов выглядит следующим образом: BUFFER_SEARCH(ADR(Array), SIZEOF(ARRAY), STR, POS, IGN), где ARRAY - имя массива. ADR является стандартной функцией, которая возвращает указатель на массив, а SIZEOF - стандартная функция, которая вычисляет размер массива. Функция возвращает скопированную из буфера строку как STRING. Этот способ обработки массива является очень эффективным, поскольку не требует дополнительной памяти, и передаваемые значения не нужно копировать. Функция BUFFER_SEARCH поддерживает подстановочные символы (IGN). Если искомая строка STR содержит символ с кодом IGN, то на этом месте в строке символов допускается любой символ в буфере. Пример: BUFFER_SEARCH(ADR(Array), SIZEOF(ARRAY), 'FIND?0', 0, 63) Находит FIND10, FIND20, FIND30 .... внутри массива, но не находит совпадения с FIND11, FIND 22 .... Искомая строка может содержать несколько подстановочных символов. Подстановочный символ всегда соответствует ровно одному символу в буфере. |

В версии 3.20 эта функция работает некорректно. Если искомая строка начинается в буфере с позиции 0, функция вернет 0. То же самое она вернет, если в буфере нет искомой строки.
История изменений
5 марта 2008 rev 1.0 оригинальная версия
16 марта 2008 rev 1.1 тип входа size изменен на uint
13 мая 2008 rev 1.2 изменен тип указателя на массив[1..32767]
размер строки изменен на STRING_LENGTH
12 ноября 2009 rev 1.3 значение end ограничено размером массива
25 января 2011 rev 1.4 ign = True игнорирует регистр
возвращает -1, если ничего не найдено