Переменные памяти существуют, только пока приложение выполняется или в той сессии 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
Объектно-ориентированное программирование
Контейнеры хранения данных