Распечатать страницу

Частные переменные в Visual FoxPro

« Назад

Пусть переменная, например 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.