Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Значения параметра nFlags

Бит

nFlags (сумма)

Описание

0

1

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

1

2

Включает элемент в массив, даже если элемент пустой

2

4

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

3

8

Задает чувствительные к регистру символы конца строки

4

16

Включает символы конца строки в массив

Замечание. В предшествующих версиях употреблялся параметр lTrim, соответствующий, если задан и равен .T., в версии 9.0 nFlags = 1.

[cParseChar [, cParseChar2 [, …]]] – задают одну или более символьных строк, используемых в качестве символов конца строки в cExpression, копируемой в элемент массива ArrayName. Максимальное число допустимых строк в cParseChar – 23. Максимальная длина каждой из них – 11 символов.

По умолчанию конец строки задается символом CHR(10) или символом новой строки – CHR(13), или комбинацией этих символов – CHR(10) + CHR(13) или CHR(13) + CHR(10). Если параметр cParseChar задан, то символы CHR(10) и CHR(13) в копируемой строке cExpression игнорируются, если только они не указаны в cParseChar как завершающие.

Если для работы ALINES( ) не хватит свободной памяти, то возникнет ошибка исполнения.

Пример 1. В memo-поле MemoField первой записи таблицы Test.dbf находятся две строки:

Это memo-поле

и его вторая строка

Следующая программа формирует массивы arrayOfLines и arrayOfWords, содержащие соответственно строки-слова этого memo-поля.

if not Used('Test') then

use d:\HomeLibrary\Test in 0

else

select Test

go top

endif

Alines(arrayOfLines, Test.MemoField)

for each elem in arrayOfLines

? elem

next

&& Используем в качестве завершающих строку символов

&& CHR(10) – символ конца строки и символ пробела CHR(32)

Alines(arrayOfWords, Test.MemoField, 1, Chr(10), Chr(32))

for each word in arrayOfWords

? word

next

Результат:

Массив arrayOfLines

(1) Это memo-поле

(2) и его вторая строка

Массив arrayOfWords

(1) Это

(2) memo-поле

(3) и

(4) его

(5) вторая

(6) строка

Пример 2. Исходная строка разбивается на подстроки, помещаемые в массив arrayOfLines. Для выделения подстрок выбраны символы 'A', 'D' и 'G', каждый из которых рассматривается ALINES( ) как символ, завершающий строку в исходном выражении.

Alines(arrayOfLines, 'aAbcDefGhiDjk', .F., 'D', 'A', 'G')

Результат (в исходном выражении обнаружено 5 строк):

(1) a

(2) bc

(3) ef

(4) hi

(5) jk

Пример 3. Создается функция ShortName, формирующая по фамилии имени и отчеству (параметр fullName) строку, состоящую из фамилии и инициалов. Например, если fullName – это "Николаев Сергей Иванович", то результатом функции будет строка "Николаев С. И.".

? ShortName("Николаев Сергей Иванович")

function ShortName(fullName)

if Empty(fullName) then

return ""

endif

&& Формируем массив из имеющихcя в строке fullName слов

&& Элементами массива могут быть пробелы, если между словами не один,

&& а несколько пробелов

Alines(aWords, Alltrim(fullName), 1, ' ')

sAu = aWords(1) && Фамилию берем полностью

for k = 2 to Alen(aWords)

nextWordFirstLetter = Left(aWords(k), 1)

&& Пропускаем возможные пробелы

sAu = sAu + Iif(Empty(nextWordFirstLetter), "", " " + Left(aWords(k), 1) + ".")

next

&& Возвращаем фамилию с инициалами

return sAu

endFunc

Функция

AMEMBERS(ArrayName, oObjectName | cClassName [, nArrayContentsID] [, cFlags])

записывает для заданного объекта или класса имена свойств, событий, методов и добавленных объектов в массив ArrayName. Возвращает число строк (если сформирован двумерный массив) или число элементов результирующего массива.

Параметры:

oObjectName | cClassName – имя объекта | класса, данные о котором заносятся в массив ArrayName.

nArrayContentsID – принимает значения 0 | 1 | 2 | 3, оказывающие следующее влияние:

  • 0 – формируется одномерный массив с именами свойств объекта или класса. Тот же результат получается, если параметр nArrayContentsID опущен;

  • 1 – формируется двумерный массив с двумя столбцам. Первый элемент строки содержит имя свойства, метода или добавленного объекта, второй – вид значения первого элемента: Property, Event, Method или Object.

  • 2 – формируется одномерный массив, содержащий имена определенных в VFP объектов, добавленных в объект oObjectName, например, имена дочерних объектов (элементов управления) в форме.

  • 3 – формируется двумерный массив из 4-х столбцов, содержащих приведенные в табл. 6.13 значения.

Таблица 6.13

Состав строки массива ArrayName, когда nArrayContentsID = 3

Номер столбца

Что содержит

1

Имя свойства, события или метода

2

Вид значения первого элемента строки, например: Event, Method, Property, PropertyPut, PropertyGet, PropertyPutRef

3

Если первый элемент – это событие или метод, то содержит имена параметров процедуры, или пустую строку – в противном случае

4

Строка помощи

Если nArrayContentsID = 3, то oObjectName может быть как объектом VFP, так и COM-объектом, например:

oExcel = CreateObject("Excel.Application")

Amembers(gaPropArray, oExcel, 3)

Замечание. Значение 3 для nArrayContentsID не может употребляться в APP- или EXE-приложениях.

cFlags – задает условия фильтрации данных. Не оказывает влияния, когда oObjectName – это идентификатор COM-объекта. Параметр задается как строка из следующих символов:

  • P – защищенные свойства, методы и события;

  • H – скрытые свойства, методы и события;

  • G – глобальные свойства, методы и события;

  • N – встроенные (предопределенные) свойства, методы и события;

  • U – определенные пользователем (внешние) свойства, методы и события;

  • C – измененные свойства, методы и события (кроме измененных свойств-массивов);

  • I – наследуемые свойства, методы и события;

  • B – собственные свойства (добавленные методом AddProperty), методы и события;

  • R – свойства, с установленным флагом "Только для чтения".

Возможны следующие, не содержащие взаимно исключающих величин группировки значений параметра: [P | H | G], [N | U], [C] и [I | B] [R].

По умолчанию присутствующие в строке cFlags величины объединяются логической операцией "ИЛИ". После указания в строке символа "+" будет использоваться операция "И". Если в строку cFlags поместить дополнительно символ "#", то в массив ArrayName будет добавлен столбец, содержащий расшифровку cFlags для указанного в первом столбце значения.

Пример. Создаются 2 класса – родительский и дочерний. Функция AMEMBERS( ) используется для получения информации об объекте-экземпляре дочернего класса с выделением данных о собственных и наследуемых свойствах и методах.

&& Создаем объект типа VectorFunction

vFunc = CreateObject("VectorFunction")

&& Формируем массив arrayOfMembers с описанием объекта vFunc типа VectorFunction

nCount = Amembers(arrayOfMembers, vFunc, 3, "#IB")

for iRow = 1 to nCount

?

for iCol = 1 to Alen(arrayOfMembers, 2)

?? arrayOfMembers(iRow, iCol), " "

endFor

endFor

&&

&& Создаем родительский класс

define class VectorInit as Custom

arraySize = 1

&& Метод класса VectorInit

procedure InitArray(vect)

&& …

endProc

endDefine

&&

&& Создаем дочерний класс. VectorInit – имя класса-родителя

define class VectorFunction as VectorInit

function DotProduct(a, b)

&& …

endFunc

endDefine

Фрагмент результата (оформлен в виде табл. 6.14):

Таблица 6.14

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]