Выполняет копирование каждой строки символьного выражения или memo-поля в соответствующий элемент массива

ALINES(ArrayName, cExpression [, nFlags] [, cParseChar [, cParseChar2 [, ...]]])

Параметры

ArrayName

Определяет имя массива, в который будут копироваться строки символьного выражения или memo-поля.

NoteПримечание

Если массива не существует, Visual FoxPro автоматически его создаст. Если массив уже существует, но его размерность недостаточна, чтобы принять все строки источника, Visual FoxPro автоматически увеличит размер массива. Если массив больше, чем нужно, он будет усечен.

NoteПримечание

В случае использования данных с типом Varbinary и Blob, функция ALINES( ) создаст массив, элементы которого будут иметь тип Varbinary.

cExpression

Определяет символьное выражение или memo-поле, которые содержат строки для копирования в массив. Регистр символов имеет значение.

NoteПримечание

Если cExpression -пустая строка или содержит значение .NULL., будет создан массив с единственным элементом, содержащим пустое значение.

[, nFlags]
NoteПримечание

Значение nFlags равное 1 эквивалентно опции lTrim в предыдущих версиях Visual FoxPro. Visual FoxPro 9.0 поддерживает выполнение кода предыдущих версий.

Следующая таблица описывает значения, которые может принимать параметр nFlags.

Бит Значение (дополняющее) Описание

0

1

Удаляются ведущие и завершающие пробелы из символьной строки или ведущие и завершающие нулевые байты для данных типа Varbinary и Blob.

1

2

В массив добавляется последний "пустой" элемент.

2

4

В массив не включаются пустые элементы.

3

8

Определяет синтаксический анализ без учета регистра.

4

16

В элемент массива строка будет помещаться вместе с символами синтаксического анализа.

[, cParseChar[, c ParseChar2[, ...]]]

Задает одну или более символьных строк, которые будут определять конец строки в cExpression (символы синтаксического анализа). Когда cParseChar определен, функция будет искать его вхождение в символьной строке cExpression и, если это вхождение будет найдено, оно и будет являться концом строки, которая копируется в первый элемент массива. Следующая строка продолжится с символа, стоящего после cParseChar.

NoteПримечание

Максимально допустимая длина cParseChar- 23 символа.

Для обозначения конца строки используются символы перевода строки (CHR(10)) или возврата каретки (CHR(13)) или любая их комбинация, например, (CHR(10) + CHR(13) или CHR(13) + CHR(10)). Поведение функции ALINES( ) по умолчанию таково, что, если определены один или несколько параметров cParseChar, то символы CHR(13) и CHR(10) игнорируются в качестве окончания строк, если только они сами не заданы как параметры cParseChar.

NoteПримечание

Если функция ALINES( ) работает с данными типа Varbinary or Blob и параметр cParseChar опущен, то как окончание строки обрабатывается шестнадцатеричное значение 0hA (10). Будьте внимательны при таком использовании функции, т.к. само значение 0hA, не сохраняется в элементе массива, что может привести к искажению двоичных данных. Например, при обработке 0hFE0AF2, функция ALINES( ) создаст массив с двумя элементами: 0hFE и 0hF2.

Expand imageВозвращаемое значение

Numeric. Функция ALINES( ) возвращает количество элементов в созданном массиве (количество строк в символьном выражении или memo-поле).

Expand imageЗамечания

Функция ALINES( ) предоставляет простой способ анализа строк в символьном выражении или memo-поле. По сравнению с функцией MLINE( ), ALINES( ) позволяет анализировать данные быстрее и с меньшими затратами на программирование. Кроме того, ALINES( ) нечувствительна к значению, заданному командой SET MEMOWIDTH.

Первая строка символьного выражения или memo-поля копируется в первый элемент массива, вторая - во второй и т.д.

Для обработки больших символьных выражений и memo-полей, компьютер должен обладать достаточным объемом памяти. В случае ее нехватки Visual FoxPro сгенерирует сообщение об ошибке.

Следующие примеры иллюстрируют использование синтаксического анализа без учета регистра:

  CopyCode imageСкопировать код
? ALINES(aMyArray, UPPER(employee.notes), "R.") 

- или -

  CopyCode imageСкопировать код
? ALINES(aMyArray, employee.notes, "R.", "r.")

Expand imageПример

В следующем примере используется база данных из примеров, поставляемых с Visual VoxPro. Открывается таблица Employee базы данных Testdata.dbc. ALINES( ) копирует строки из memo-поля Notes в массив aMyArray и на экран выводится возвращаемое функцией значение. Каждый раз при использовании ALINES( ) определяются различные символы синтаксического анализа.

  CopyCode imageСкопировать код
CLOSE DATABASES
CLEAR
SET TALK OFF
OPEN DATABASE (HOME(2) + "data\testdata")
USE employee  && Open Employee table

? ALINES(aMyArray, employee.notes)            && Displays 1
? ALINES(aMyArray, employee.notes, CHR(13))   && Displays 1

? ALINES(aMyArray, employee.notes, " ")       && Displays 75
? ALINES(aMyArray, employee.notes, ".")       && Displays 7
? ALINES(aMyArray, employee.notes, ",")       && Displays 4
? ALINES(aMyArray, employee.notes, ".", ",")  && Displays 10

? ALINES(aMyArray, employee.notes, 8, "m")    && Displays 14
? ALINES(aMyArray, employee.notes, "m")       && Displays 11
? ALINES(aMyArray, employee.notes, "M")       && Displays 4

Expand imageСмотрите также