когда Delphi вызывает обработчик события, старые значения локальных переменных стираются. Что если мы хотим отслеживать, сколько раз была нажата кнопка? Мы могли бы сохранить значения, используя переменную уровня блока, но обычно рекомендуется зарезервировать переменные уровня блока только для обмена информацией. В Delphi нам обычно нужны статические переменные или типизированные константы.
Переменная или Константа
Типизированные константы можно сравнивать с инициализированными переменными-переменными, значения которых определяются при входе в их блок (обычно это обработчик событий). Такая переменная инициализируется только при запуске программы. После этого значение типизированной константы сохраняется между последовательными вызовами их процедур.
Использование типизированных констант - это очень чистый способ реализации автоматически инициализированных переменных. Чтобы реализовать эти переменные без типизированных констант, нам нужно создать раздел инициализации, который устанавливает значение каждой инициализированной переменной.
Переменные Типизированные Константы
Хотя мы объявляем типизированные константы в разделе const процедуры, важно помнить, что они не являются константами. В любой точке вашего приложения, если у вас есть доступ к идентификатору типизированной константы, вы сможете изменить ее значение.
Чтобы увидеть типизированные константы в работе, поместите кнопку в пустую форму и назначьте следующий код для обработчика события OnClick:
процедура TForm1.Button1Click (Отправитель: TObject); Const клики: целое число = 1; // не истинная константаначать Form1.Caption: = IntToStr (клики); клики: = клики + 1; конец;
Обратите внимание, что каждый раз, когда вы нажимаете на кнопку, заголовок формы постоянно увеличивается.
Теперь попробуйте следующий код:
процедура TForm1.Button1Click (Отправитель: TObject); вар клики: целое число; начать Form1.Caption: = IntToStr (клики); клики: = клики + 1; конец;
Теперь мы используем неинициализированную переменную для счетчика кликов. Обратите внимание, что странное значение в заголовке формы после нажатия на кнопку.
Константы Типизированные Константы
Согласитесь, идея изменяемых констант звучит немного странно. В 32-разрядных версиях Delphi Borland решили не поощрять их использование, но поддерживают их для унаследованного кода Delphi 1.
Мы можем включить или отключить Назначаемые типизированные константы на странице «Компилятор» диалогового окна «Параметры проекта».
Если вы отключили Назначаемые типизированные константы для данного проекта, при попытке скомпилировать предыдущий код Delphi выдаст ошибку «Левая сторона не может быть назначена» при компиляции. Однако вы можете создать присваиваемую типизированную константу, объявив:
{$ J +}Const клики: целое число = 1; {$ J-}
Поэтому первый пример кода выглядит так:
процедура TForm1.Button1Click (Отправитель: TObject); Const{$ J +} клики: целое число = 1; // не истинная константа{$ J-}начать Form1.Caption: = IntToStr (клики); клики: = клики + 1; конец;
Вывод
Вам решать, хотите ли вы, чтобы типизированные константы были назначаемыми или нет. Здесь важно то, что помимо идеальных для счетчиков, типизированные константы идеально подходят для создания компоненты поочередно видимы или невидимы, или мы можем использовать их для переключения между любыми логическими свойства. Типизированные константы могут также использоваться внутри обработчика событий TTimer, чтобы отслеживать, сколько раз даже было запущено.