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

Создание констант и переменных в VFP

« Назад

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

Буквальная константа – это одно из возможных значений данных. Например: 1.2, .T., "Дата и время" – буквальные константы числового, логического и символьного типов.

Именованная константа – это элемент языка, значение которого не может быть изменено на этапе выполнения программы.

Директива

#DEFINE CONSTNAME eExpression

определяет именованную константу CONSTNAME.

Константа создается и получает значение на этапе компиляции. Использование констант приводит к экономии памяти, снижению временных затрат и в ряде случаев к упрощению программы.

Параметр:

eExpression – выражение типа Character, Numeric, Currency, Date, DateTime или Logical. Всякий раз, когда константа CONSTNAME обнаруживается в выражении, вычисляется eExpression и полученный результат используется в качестве значения константы.

Замечания:

  1. Нельзя использовать в eExpression системные переменные, поскольку они не оцениваются на этапе компиляции.

  2. Имя константы должно отвечать тем же требованиям, что и имя переменной (см. разд. 5.5.2.2).

  3. Имя константы не должно совпадать с зарезервированным именем VFP (см. раздел Reserved words справки). Нарушение этого условия сделает невозможным употребление соответствующего средства VFP, например:

#define SQRT 4

&& Теперь функция SQRT( ) недоступна

? SQRT                               && Напечатает: 4

? Sqrt(4)                              && Вызовет ошибку

#undef SQRT

? Sqrt(4)                              && Напечатает: 2.00

Пример. Значение константы SOMECONST переопределяется.

#define SOMECONST x * Sqrt(y)

x = 2

y = 4

? SOMECONST                 && Напечатает: 4.00

x = 1

y = 9

? SOMECONST                 && Напечатает: 3.00

Созданная define-константа доступна только в породившей ее программе. Так, если константа определена в методе или обработчике события формы, то она доступна только в внутри этих процедур.

Однако если define-константа определена в Include-файле, и этот файл выбран для формы (Form – Include File…), то константа доступна во всех методах и обработчиках событий формы.

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

Директива

#UNDEF CONSTNAME

освобождает define-константу CONSTNAME.

После ее исполнение имя CONSTNAME воспринимается как имя несуществующей переменной.