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

5.5.2. Переменные

5.5.2.1. Виды переменных

Переменные разделяются на скалярные и массивы. Скалярная переменная содержит одно значение. Массив содержит, как правило, несколько значений (элементов) и может иметь в VFP одно или два измерения.

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

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

Независимо от способа создания переменная всегда получает значение. Тип переменной определяется типом хранимого в ней значения и может изменяться по мере выполнения программы, например:

varName = 5.2

? VarType(varName) && Напечатает: N

&& Заносим в переменную вместо числа строку

&& Это повлечет изменение типа переменной

varName = "Теперь это строка"

? VarType(varName) && Напечатает: C

Скалярная переменная может быть создана:

  • в результате выполнения оператора присваивания (команды =), например:

&& Создается переменная nValue типа Numeric со значением 5

nValue = 5

  • командой STORE, например:

&& Создаем переменные nValue1 и nValue2 типа Numeric со значением 5

store 5 to nValue1, nValue2

  • командами PUBLIC и LOCAL; переменные, созданные этими командами, получают значение .F. (ложь), например:

&& Создаем 3 переменные – глобальную и две локальных

public gVar

local lVar1, lVar2

? gVar, lVar1, lVar2 && Напечатает: .F. .F. .F.

  • в результате выполнения команд VFP, таких, как CALCULATE, SCATTER и др. (порядок создания переменных см. в описании команд), например:

&& Таблица Books должна быть открыта

select Books

&& Создается переменная avgPrice типа Numeric,

&& поскольку Price – это числовое поле

average Price to avgPrice

Массивы создаются командами PUBLIC, LOCAL, DIMENSION и DECLARE, а также в результате выполнения многих иных команд и функций VFP, например ADIR, AFONT, SCATTER и др. Более подробно о массивах см. в гл. 6.

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

5.5.2.2. Имя переменной

Имя переменной может включать буквы (английского и/или русского алфавита), цифры и знаки подчеркивания и начинаться либо с буквы, либо со знака подчеркивания. Принципы формирования имен переменных приведены в разд. 1.1.3.1.

Если имя переменной (константы) совпадает с одним из зарезервированных имен VFP, то его начертание в текстовом окне VFP примет синей цвет, или черный – в противном случае.

Примеры допустимых имен переменных:

varName = 5.2

_var_Name = 5.2

перемИмя = 5.2

? varName, _var_Name, перемИмя && Напечатает: 5.20 5.20 5.20

Замечание. В VFP определены многочисленные так называемые системные переменные, хранящие употребляемые для системных нужд значения. Например, системная переменная _DIARYDATE содержит дату системного календаря VFP (см. разд. 3.9.9.2). При начале работы приложения системные переменные инициализируются значениями по умолчанию. Так, системная переменная _DIARYDATE при запуске приложения получает значения текущей (системной) даты. В процессе исполнения значения системных переменных могут быть изменены как VFP, так и пользователем. Имена системных переменных начинаются со знака подчеркивания.

Регистр букв в имени переменных не имеет значения. То есть имена VARName, VARNAME и varname трактуются VFP как имя одной и той же переменной.

Имени переменной может предшествовать буква m с последующей точкой, например:

local m.lVar1, lVar2 && Употребляем префикс m. для переменной lVar1

? lVar1, m.lVar2 && Употребляем префикс m. для переменной lVar2

Такой префикс необходим, когда переменные создаются командой SCATTER: он позволяет отличить их от одноименных полей таблицы. Тип переменных, созданных SCATTER, совпадает с типом соответствующих полей таблицы.

&& Таблица Books должна быть открыта

select Books

&& Таблица Books имеет поля BookId, Book и Price

&& Создаются переменные m.BookId, m.Book и m.Price,

&& имеющие пустые значения (поскольку указана опция BLANK)

&& Тип переменных совпадает с типом породивших их полей таблицы

scatter memvar blank

&& Тестируем значения переменных, созданных командой SCATTER

? Empty(m.BookId), Empty(m.Book) && Напечатает: .T. .T.

&& Тестируем значения полей таблицы Books

? Empty(BookId), Empty(Book) && Напечатает: .F. .F.

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