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

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

nValue

Описание

0 или опущен

Возвращает массив из 2-х столбцов. Первый столбец массива содержит имя принтера, второй – имя порта, к которому принтер подсоединен

1

Возвращает массив из 5-и столбцов, соответственно содержащих:  имя принтера;  имя порта, к которому принтер подсоединен;  имя драйвера принтера;  комментарий, которым снабжен принтер;  расположение принтера

Пример. Выводятся имена установленных принтеров; если таковых нет, то появляется соответствующее предупреждение.

if Aprinters(arrayOfInstalledPrinters) > 0

&& Есть по крайней мере один установленный принтер

for iRow = 1 to Alen(arrayOfInstalledPrinters, 1)

?

?? arrayOfInstalledPrinters(iRow, 1), arrayOfInstalledPrinters(iRow, 2)

next

else

MessageBox('Нет установленных принтеров!')

return

endif

Возможный результат:

HP LaserJet 6L LPT1:

Функция

APROCINFO(ArrayName, cFileName [, nType])

формирует массив ArrayName, содержащий элементы встроенного языка VFP, имеющиеся в PRG-файле cFileName. Возвращает число строк результирующего массива. Параметр nType задает вид информации, записываемой в массив ArrayName. Действие параметра описано в табл. 6.18.

Таблица 6.18

Действие параметра nType

nType

Что содержит массив

Состав строки массива

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

Что содержит

0

Описания всех элементов языка

1

Имя элемента

2

Номер строки в файле

3

Вид элемента

4

Отступ (используется с директивами #IF для описания их уровня вложенности)

1

Описания определений классов

1

Имя класса

2

Номер строки в файле

3

Родительский класс

4

Является ли OLE-объектом

2

Описания процедур классов

1

Имя процедуры, имеющее в качестве префикса имя класса

2

Номер строки в файле

3

Описания директив компилятора

1

Имя, определяемое директивой

2

Номер строки в файле

3

Вид директивы

По умолчанию nType = 0.

Вид элемента встроенного языка VFP, может принимать следующие, заносимые в третий столбец массива значения:

  • Define, если элемент – это директива #DEFINE;

  • Directive в случае иной директивы компилятора;

  • Class, если элемент – это определения класса

  • Procedure, если элемент – это процедура, функция, событие или метод.

Функция полезна на этапе разработки программ и их последующего документирования.

Пример. Функция APROCINFO( ) применяется для анализа следующей программы, хранящейся в файле d:\ProcForProcInfo.prg.

&& Файл d:\ProcForProcInfo.prg

clear

&&

#define NTIMES 3

&&

oAB = CreateObject("APlusB")

&& Идентификатор объекта должен передаваться по ссылке

c = FindC(0, 3, @oAB)

? c

&& Освобождаем объект oAB

release oAB

&&

define class APlusB as Custom

A = 1

B = 2

function AandB

return This.A + This.B

endFunc

endDefine

&&

function FindC(a, b, oAB)

oAB.A = a

oAB.B = b

c = 0

for k = 1 to NTIMES

c = c + oAB.AandB( )

oAB.A = oAB.A + 1

oAB.B = oAB.B + 1

endFor

return c

endFunc

Для вывода результата использован следующий, помещенный в файл d:\goAProcInfo.prg код:

&& Файл d:\goAProcInfo.prg

&& Вызываем APROCINFO( ) с различными значениями параметра nType

for nType = 0 to 3

?

? 'nType = ', nType

&& Формируем массив arrayPRG

AProcInfo(arrayPRG, 'd:\ProcForProcInfo.prg', nType)

for iRow = 1 to Alen(arrayPRG, 1)

? && Переход на новую строку

&& Выводим элементы строки iRow массива на одной строке окна вывода

for iCol = 1 to Alen(arrayPRG, 2)

?? arrayPRG(iRow, iCol), ' '

next

next

next

Результат:

nType = 0 (элементы)

NTIMES

3

Define

0

APlusB AS Custom

10

Class

0

APlusB.AandB

13

Procedure

0

findC

18

Procedure

0

nType = 1 (класс)

APlusB

10

Custom

nType = 2 (процедура)

APlusB.AandB

13

nType = 3 (директива)

NTIMES

3

Define

Функция

ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [, nSearchColumn [, nFlags]]]])

ищет в массиве ArrayName элемент равный eExpression. В случае удачи возвращает номер первого найденного элемента (или номер строки массива); возвращает 0, если поиск не дал результатов. Если нужно независимо использовать параметр nSearchColumn, то для nStartElement и nElementsSearched задаются отрицательные значения. Если нужно независимо использовать параметр nFlags, то вдобавок значение nSearchColumn устанавливается меньшим нуля.

Как и в других функциях значения параметров не должны приводить к нарушению границ массива.

В случае символьных данных по умолчанию поиск чувствителен к регистру имеющихся в eExpression букв.

Параметры:

eExpression – значение для поиска. Возможен любой тип данных.

nStartElement – номер элемента, с которого начинается поиск. В случае двумерного массива номер элемента по его индексам можно получить, употребив AELEMENT( ). При отсутствии параметра поиск ведется с первого элемента.

nElementsSearched – число просматриваемых элементов. При отсутствии параметра поиск ведется вплоть до последнего элемента.

nSearchColumn – номер столбца, в котором ведется поиск. Полезен, в частности, при работе с массивом, созданным функцией AFIELDS( ). Если параметр меньше нуля или равен ему, то поиск ведется во всем массиве (с учетом ограничений, устанавливаемых nStartElement и nElementsSearched). Если положителен, то поиск ведется в столбце nSearchColumn начиная с элемента nStartElement; число участвующих в поиске элементов равно nElementsSearched. Так, в случае массива twoDArray формы 34 вызов

Ascan(twoDArray, 9, 2, 2, 3)

обеспечит поиск равных числу 9 элементов в третьем столбце среди второго и третьего элементов столбца. Вызов

Ascan(twoDArray, 9, 2, 3, 3)

недопустим, поскольку приводит к нарушению верхней границы третьего столбца.

Замечание. В VFP версии 6 параметры nStartElement и nElementsSearched при заданном параметре nSearchColumn своего действия не изменяли, то есть применялись не к заданному столбцу, а ко всему двумерному массиву.

nFlags – задает дополнительные условия поиска. Принимает значения от 1 до 15 включительно. При наличии параметра функция ASCAN( ) интерпретирует в соответствии с табл. 6.19 каждый бит параметра.

Таблица 6.19

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