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

Элементы строки массива, формируемого astackinfo( )

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

Что содержит

1

Уровень стека вызовов

2

Имя файла текущей программы

3

Имя программного компонента или объекта

4

Имя файла программного компонента или объекта; возвращается также функцией SYS(16)

5

Номер строки в файле программного компонента или объекта, содержащей вызов

6

Строка кода, содержащая вызов процедуры следующего уровня или ASTACKINFO( ) для последнего уровня

Функция объединяет возможности функций SYS(16) и Program( ), дополнительно предоставляя информацию о номере строки каждого вызова.

Пример. Вызов ASTACKINFO( ) выполняется в процедуре PROC2( ) третьего уровня в десятой строке программы, хранящейся в файле d:\HomeLibrary\Test.prg.

clear

clear memory

do Proc1

procedure Proc1

do Proc2

endProc

procedure proc2

Astackinfo(arrayName)

display memory like arrayName to file d:\a.txt

endProc

Печать команды DISPLAY MEMORY LIKE arrayName:

ARRAYNAME Priv A proc2

(1, 1) N 1 ( 1.00000000)

(1, 2) C "d:\HomeLibrary\Test.fxp"

(1, 3) C "test"

(1, 4) C "d:\HomeLibrary\Test.prg"

(1, 5) N 3 ( 3.00000000)

(1, 6) C "DO Proc1"

(2, 1) N 2 ( 2.00000000)

(2, 2) C "d:\HomeLibrary\Test.fxp"

(2, 3) C "Proc1"

(2, 4) C "d:\Homelibrary\Test.prg"

(2, 5) N 6 ( 6.00000000)

(2, 6) C "DO Proc2"

(3, 1) N 3 ( 3.00000000)

(3, 2) C "d:\HomeLibrary\Test.fxp"

(3, 3) C "Proc2"

(3, 4) C "d:\HomeLibrary\Test.prg"

(3, 5) N 10 ( 10.00000000)

(3, 6) C "ASTACKINFO(arrayName)"

Функция

ASUBSCRIPT(ArrayName, nElementNumber, nSubscript)

возвращает номер строки или столбца элемента массива ArrayName по номеру элемента.

Параметры:

nElementNumber – номер элемента.

nSubscript – если равен 1, то в случае двумерного массива возвращается номер строки элемента, в а случае одномерного – номер элемента, Если равен 2, то функция вернет номер столбца, в котором расположен элемент.

Функция

ATAGINFO(ArrayName [, cCDXName [, nWorkArea | cTableAlias]])

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

Параметры:

cCDXName – имя составного индекса, информацию о котором надо получить. Если в качестве параметра передана пустая строка (""), то функция ATAGINFO( ) вернет для выбранной (текущей) таблицы число индексов в открытом CDX-файле плюс число всех открытых IDX-файлов.

nWorkArea | cTableAlias – необязательный параметр, задающий номер рабочей области или псевдоним таблицы, для которой ATAGINFO( ) собирает информацию. Если параметр опущен, то берется таблица, открытая в текущей рабочей области.

Каждая строка массива содержит приведенные в табл. 6.22 данные. Тип данных всех элементов массива – Character.

Таблица 6.22

Состав строки массива, формируемого ataginfo( )

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

Что содержит

1

Имя индекса или IDX-файла

2

Тип индекса (первичный, кандидатный, уникальный или регулярный)

3

Индексное выражение

4

Фильтр

5

Вид сортировки (возрастающая или убывающая)

6

Последовательность сравнения при выполнении сортировки

Пример. Функция ATAGINFO( ) употребляется для таблицы Books.dbf базы HomeLibrary.dbc. (Описание таблиц и их индексов базы данных см. в разд. 2.2.)

close DataBases

open DataBase d:\HomeLibrary\HomeLibrary.dbc

use Books in 0 && Открываем Books.dbf

&& Получаем и печатаем массив arrayTag

if Ataginfo(arrayTag) > 0 then

for iRow = 1 to Alen(arrayTag, 1)

?

for iCol = 1 to Alen(arrayTag, 2)

?? arrayTag(iRow, iCol), " "

next

next

endif

&&

&& Пример для функции AUSED( )

&& Получаем и печатаем массив arrayUsedTables

Aused(arrayUsedTables)

for iRow = 1 to Alen(arrayUsedTables, 1)

?

?? arrayUsedTables(iRow, 1), arrayUsedTables(iRow, 2)

next

Массив arrayTag:

BOOKID

PRIMARY

BOOKID

ASCENDING

MACHINE

BOOK

REGULAR

LEFT(BOOK, 20)

ASCENDING

MACHINE

Массива arrayUsedTables:

Books

1

Функция

AUSED(ArrayName [, nDataSessionNumber [, cTableName]])

заносит для выбранной сессии данных в двумерный массив ArrayName псевдонимы открытых таблиц и соответствующие номера рабочих областей. Возвращает число строк в сформированном массиве.

Параметры:

nDataSessionNumber –задает номер сессии данных. Если опущен, то берется текущая сессия данных.

Замечание. Изменение текущей сессии данных выполняется командой

SET DATASESSION TO [nDataSessionNumber]

cTableName – массив будет содержать псевдонимы таблицы, имеющей имя cTableName. Если nDataSessionNumber установлен в NULL, то берется текущая сессия данных. Параметр cTableName может быть задан в одном из следующих форматов:

  • DatabaseName!TableName или DatabaseName!ViewName;

  • Path\DatabaseName!TableName или Path\DatabaseName!ViewName;

  • имя таблицы или вида текущей базы данных;

  • имя таблицы или полное имя dbf-файла.

Пример 1. См. в примере для функции ATAGINFO( ).

Пример 2. Обновляются буферизованные таблицы, открытые в текущей сессии данных.

for nTable = 1 to Aused(arrayUsedTables)

cTableAlias = arrayUsedTables(nTable, 1)

&& Проверяем, используется ли буферизация данных в таблице

if CursorGetProp('Buffering', cTableAlias) > 1 then

TableUpdate(0, .T., arrayUsedTables(1, cTableAlias))

endif

endFor

Замечание. Буферизация таблицы задается функцией CURSORSETPROP( ). При этом SET MULTILOCKS должен быть установлен в ON.

Функция

AVCXCLASSES(ArrayName, cLibraryName)

записывает информацию о классах библиотеки классов cLibraryName в двумерный массив ArrayName. Каждому классу массива отвечает его строка. В строке массива 11 столбцов, содержание которых раскрывается в табл. 6.23.

Таблица 6.23

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