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

5.5.2.3. Локальные переменные

Область действия локальной переменной – это программный компонент, в котором переменная создана.

Команды

LOCAL Var1 [AS type [OF ClassLib]] | [ArrayName1(nRows1, [, nColumns1]) [AS type [OF ClassLib]]] [, Var2 [AS type [OF ClassLib]]] | [, ArrayName2(nRows2, [, nColumns2]) [AS type [OF ClassLib]] …]

или

LOCAL [ARRAY] ArrayName1(nRows1 [, nColumns1]) [AS type [OF ClassLib]] [, ArrayName2(nRows2 [, nColumns2]) [AS type [OF ClassLib]] …]

создают локальные переменные – скалярные и массивы.

Опции и параметры:

Var1, Var2, … – список создаваемых локальных переменных.

[ARRAY] ArrayName1 (nRows1 [, nColumns1]) [, ArrayName2 (nRows2 [, nColumns2])] ... – список создаваемых локальных массивов. Описание параметров дано при рассмотрении команды DIMENSION.

AS type – тип данных, на котором базируется переменная или массив.

OF ClassLib – библиотека классов, содержащая описание типа type.

Опция AS применяется, когда нужна строгая типизация данных.

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

Переменные, созданные командой LOCAL, инициализируются значением .F., то есть имеют первоначально тип Logical. Переменная, объявляемая LOCAL, не должна иметь значения. Так, недопустима следующая последовательность операторов:

a = 2

local a && Генерирует ошибку

При ее обнаружении VFP генерирует ошибку. Локальные переменные могут передаваться по ссылке. Имя команды LOCAL должно употребляться без сокращений.

5.5.2.4. Глобальные переменные

Глобальная переменная может быть использована и модифицирована в любом программном компоненте, исполняемом во время текущего сеанса VFP, а также в командном окне.

Команды

PUBLIC Var1 [AS type [OF ClassLib]] | [ArrayName1(nRows1, [, nColumns1]) [AS type [OF ClassLib]]] [, Var2 [AS type [OF ClassLib]]] | [, ArrayName2(nRows2, [, nColumns2]) [AS type [OF ClassLib]] …]

или

PUBLIC [ARRAY] ArrayName1(nRows1 [, nColumns1]) [AS type [OF ClassLib]] [, ArrayName2(nRows2 [, nColumns2]) [AS type [OF ClassLib]] …]

создают глобальные переменные – скалярные и массивы.

Опции и параметры:

См. команду LOCAL.

Переменные, созданные командой PUBLIC, инициализируются значением .F.

Переменная, объявляемая PUBLIC, если она уже существует, не должна иметь значения.

Глобальные переменные, в отличие от локальных, должны освобождаться явно, например командой RELEASE.

Замечание. Переменная, созданная в командном окне, например в результате выполнения оператора присваивания, является глобальной.

5.5.2.5. Частные переменные

Пусть переменная, например someVar, создана в основной программе файла d:\Prog.prg в результате выполнения оператора присваивания:

someVar = 2.5

Тогда она будет видна в любом программном компоненте, вызываемом из d:\Prog.prg, а также в программных компонентах более низкого уровня. Например:

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

someVar = 2.5 && Создаем переменную someVar

ProcA( ) && Вызов процедуры ProcA

procedure ProcA

ProcB( ) && Вызов процедуры ProcB

endProc

&&

procedure ProcB

? someVar && Напечатает: 2.5

endProc

При этом расположенные на разных уровнях программные компоненты могут находиться в разных файлах, например в файлах d:\Prog.prg, d:\ProcA.prg и d:\ProcB.prg:

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

someVar = 2.5 && Создаем переменную someVar

do d:\ProcA && Вызов программы файла d:\ProcA.prg

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

&&

do d:\ProcB && Вызов программы файла d:\ProcB.prg

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

&&

? someVar && Напечатает: 2.5

Чтобы закрыть переменную программного компонента более высокого уровня в программном компоненте более низкого уровня употребляется команда PRIVATE.

Команды

PRIVATE VarList…]

или

PRIVATE ALL [LIKE Skeleton | EXCEPT Skeleton]

закрывают указанные переменные программного компонента более высокого уровня. В отличие от команд LOCAL и PUBLIC, команда PRIVATE переменных не создает.

Опции и параметры:

VarList – список переменных (скалярных и массивов), объявляемых как частные. Имена переменных разделяются запятыми.

ALL LIKE Skeleton – объявляются как частные переменные, удовлетворяющие маске Skeleton, которая может содержать символы ? и *.

ALL EXCEPT Skeleton – объявляются как частные переменные, не удовлетворяющие маске Skeleton.

Пример. Употребляются команды PUBLIC и PRIVATE.

&& Программа первого уровня

public var1, var2

var1 = 10

var2 = 15

do Down && Вызов процедуры второго уровня

? var1 && Напечатает: 10

? var2 && Напечатает: 100

&& Глобальные переменные освобождаются явно

release var1, var2

&& Процедура второго уровня

procedure Down

private var1

var1 = 50

var2 = 100

endProc

Из примера видно, что после вызова процедуры Down, в которой переменная var1 объявлена как частная, значение переменной var1 в программе первого уровня не изменилось.

Замечание. Результат не изменится, если в программе первого уровня удалить команду PUBLIC.

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