Переменные памяти существуют, только пока приложение выполняется или в той сессии Visual FoxPro, в которой они были созданы. Для определения области существования переменных памяти, используйте ключевые слова LOCAL, PRIVATE и PUBLIC.
- LOCAL создает переменные памяти или массивы, которые могут быть использованы или изменены только в той программе, в которой они были созданы и они недоступны из программ верхнего или нижнего уровня. Локальные переменные памяти и массивы уничтожаются сразу, как только содержащая их программа прекращает выполняться.
- PRIVATE скрывает переменные памяти или массивы, которые были определены в вызвавшей программе от текущей программы. Вы можете использовать те же самые имена для переменных памяти в текущей программе, не затрагивая оригинальные переменные. Сразу, как только программа, содержащая PRIVATE, прекращает выполняться, все переменные памяти и массивы, которые были скрыты командой PRIVATE, снова становятся доступными.
- PUBLIC определяет глобальные переменные памяти и массивы. Глобальные переменные памяти и массивы могут быть использованы и изменены из любой программы, которые Вы запустили в течение текущей сессии Visual FoxPro. Любые переменные памяти и массивы, созданные в командном окне автоматически объявляются как PUBLIC.
Обращение к переменным памяти
Если переменная памяти имеет то же самое имя, что и поле таблицы в текущей рабочей области, то Visual FoxPro сначала предполагает, что требуется прочитать содержимое именно поля таблицы. И только если в текущей рабочей области нет такого поля, осуществляется чтение значения переменной памяти. Вы можете уточнить, что ссылка относиться именно к переменной памяти, используя m. или m-> вместе с именем переменной памяти как в следующих примерах.
Копировать код | |
|---|---|
* Закрываю таблицу, которая может быть открыта в текущей рабочей области
USE
* Создаю переменную памяти
cFname = "переменная"
? cFname && печатает содержимое переменной памяти cFname
* Создаю курсор с полем, имя которого совпадает с именем переменной памяти
CREATE CURSOR test (cFname C(10))
INSERT INTO test (cFname) VALUES ("таблица")
? cFname && печатает содержимое поля cFname
? m.cFname && печатает значение переменной памяти cFname
? m->cFname && печатает значение переменной памяти cFname
? test.cFname && печатает содержимое поля cFname
| |
Для получения дополнительной информации по этим командам смотрите соответствующие темы в Help.
Замечание: |
|---|
| В объектно-ориентированном программировании Вы можете создавать свойства объектов для хранения значений вместо использования переменных памяти. Для получения дополнительной информации смотрите Объектно-оиентированное программирование. |
Смотрите также
Прочие ресурсы
Переменные памятиКоманда PUBLIC
Команда PRIVATE
Команда LOCAL
Объектно-ориентированное программирование
Контейнеры хранения данных
Замечание: