Функция MLINE()

Возвращает указанную строку 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.