Возвращает указанную строку memo-поля в виде символьной строки.
Синтаксис:
MLINE(MemoFieldName, nLineNumber [, nNumberOfCharacters])
Параметры:
MemoFieldName
Задает имя memo-поля, из которого функция MLINE( ) возвращает строку. Если memo-поле находится в таблице, которая открыта в рабочей области, отличной от текущей, поставьте перед именем memo-поля точку и псевдоним таблицы.
nLineNumber
Задает номер строки, которую нужно возвратить из memo-поля. Если номер nLineNumber отрицателен, равен 0 или больше общего числа строк memo-поля, возвращается пустая строка.
nNumberOfCharacters
Задает число символов, отсчитываемых от начала memo-поля, после которых MLINE( ) возвращает заданную строку.
Обычно в качестве nNumberOfCharacters используется системная переменная памяти _MLINE. Значение этой переменной автоматически регулируется при каждом вызове функции MLINE( ).
В рекурсивных процедурах, возвращающих строки из больших memo-полей, наивысшая производительность достигается в результате включения _MLINE в качестве nNumberOfCharacters.
Результат:
Символьный.
Комментарии:
Функция MLINE( ) отсекает все концевые пробелы в строке, заданной параметром nLineNumber.
Длина и количество строк memo-поля определяются текущим значением установки SET MEMOWIDTH (по умолчанию длина строки составляет 50 символов). Если встречается возврат каретки, никакие дополнительные символы не возвращаются. Текущая установка _WRAP определяет способ отображения строки memo-поля.
Если вы ищете в memo-поле символьную строку, функцией ATLINE( ) или ATCLINE( ) можно получить номер строки, в которой найдена символьная строка. Используя этот номер в функции MLINE( ), можно возвратить содержимое нужной строки из memo-поля.
Пример:
* В следующем примере строки возвращаются из memo-поля двумя * способами. В двух циклах используется функция MLINE( ), возвращающая * строки из memo-поля. Обратите внимание, что во втором цикле в MLINE( ) * используется системная переменная памяти _MLINE, что повышает * производительность. CLEAR SET TALK OFF SET MEMOWIDTH TO 50 CLOSE DATABASES CREATE TABLE tmemo (name c(10), notes m) APPEND BLANK && Add a record WAIT WINDOW 'Filling memo field - takes several seconds' NOWAIT *** Fill the memo field *** FOR gnOuterLoop = 1 TO 5 && loop 5 times FOR gnAlphabet = 65 TO 75 && letters A to H REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ; + CHR(13) ADDITIVE NEXT NEXT *** Display all lines from the memo field *** STORE MEMLINES(notes) TO gnNumLines && Number of lines in memo field STORE SECONDS( ) TO gnBegin && Beginning time FOR gnCount = 1 TO gnNumLines && Loop for number of lines in memo field ? MLINE(notes, gnCount) && Display each line NEXT ? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Total time *** Preferable method using _MLINE in MLINE( ) *** *** Display all lines from the memo field *** WAIT 'Press a key to see the preferred method' WINDOW CLEAR STORE 0 TO _MLINE && Reset _MLINE to zero STORE SECONDS( ) TO gnBegin && Beginning time FOR count = 1 TO gnNumLines && Loop for # of lines in memo field ? MLINE(notes, 1, _MLINE) && Display each line NEXT ? STR(SECONDS( ) - gnBegin, 4, 2) + ' seconds' && Total time SET TALK ON CLOSE DATABASES ERASE tmemo.dbf ERASE tmemo.fpt