Функции для MEMO-полей в Visual FoxPro
« Назад Функция MEMLINES(MemoFieldName)возвращает число строк в memo-поле MemoFieldName текущей записи таблицы. Если адресуется memo-поле таблицы, открытой в нетекущей области, то имя поля предваряется псевдонимом таблицы и точкой. Длина и число строк memo-поля определяются установкой команды SET MEMOWIDTH (значение по умолчанию – 50). Функция MLINE(MemoFieldName, nLineNumber [, nNumberOfCharacters])возвращает заданную строку memo-поля MemoFieldName. Результат имеет тип Character или Varbinary. Результат типа Varbinary возвращается при работе с полями типов Varbinary и Blob. Параметры: nLineNumber – номер возвращаемой строки. Возвращается пустая строка, если параметр nLineNumber отрицателен, равен нулю или больше числа строк в memo-поле. nNumberOfCharacters – число символов от начала memo-поля, пропустив которые функция MLINE( ) возвращает заданную строку. Обычно для задания nNumberOfCharacters используется системная переменная _MLINE, значение которой обновляется текущим отступом от начала memo-поля после каждого вызова MLINE( ). Замечание. Для обработки двоичных полей лучше употреблять функцию ALINES( ), поскольку с такими полями MLINE( ) может возвращать не вполне ожидаемые результаты при разных установках SET MEMOWIDTH. Функция MLINE( ) после чтения строки, например, с номером gnCount заносит в _MLINE новое значение, равное _MLINE = _MLINE + Len(MLINE(MemoField, gnCount)) После чтения первой строки: _MLINE = Len(MLINE(MemoField, gnCount)) Функция MLINE( ) отбрасывает все хвостовые пробелы получаемой строки. Конец строки memo-поля определяет либо символ возврата каретки, либо при его отсутствии – установка команды SET MEMOWIDTH. При обработке больших memo-полей рекурсивными процедурами использование _MLINE в качестве значения nNumberOfCharacters может улучшить производительность. Для поиска в memo-поле употребляются функции ATLINE( ) и ATCLINE( ). Пример. Приводятся 2 варианта использования MLINE( ) для получения строк memo-поля Notes текущей записи текущей таблицы. Во втором, более быстром, употребляется системная переменная _MLINE. store Memlines(Notes) to gnNumLines && Число строк в memo-поле && && Вариант 1 for gnCount = 1 to gnNumLines ? Mline(notes, gnCount) && Печатаем строку memo-поля next && && Вариант 2 store 0 to _MLINE && Инициализация _MLINE for gnCount = 1 to gnNumLines ? Mline(Notes, 1, _MLINE) && Печатаем строку memo-поля next |