- •Система Pascal abc
- •Редактор
- •Горячие клавиши
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Программа прервана пользователем
- •Пошаговое выполнение программы
- •Окно отладки
- •Pascal abc Язык Pascal abc Структура программы
- •Идентификаторы и служебные слова
- •Выражения и операции
- •Арифметические операции
- •Операция @
- •Операции с указателями
- •Операции с множествами
- •Приоритет операций
- •Описание переменных и констант
- •Описание типов
- •Обзор типов
- •Все порядковые типы, а также типы boolean, real и complex называются простыми типами. Порядковые типы
- •Типы boolean, real и complex
- •Строковый тип
- •Массивы
- •Множества
- •Указатели
- •Процедурный тип
- •Эквивалентность типов
- •Неявное приведение типов
- •Явное приведение типов
- •Область действия идентификатора
- •Ввод и вывод. Форматы вывода
- •Оператор присваивания
- •Условный оператор
- •Составной и пустой операторы
- •Оператор выбора
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор вызова процедуры
- •Операторы break, continue и exit
- •Оператор with
- •Оператор безусловного перехода goto
- •Оператор try ... Except
- •Оператор try ... Finally
- •Оператор raise
- •Описание процедур и функций
- •Параметры процедур и функций
- •Локальные и глобальные переменные
- •Общие стандартные процедуры и функции
- •Стандартные процедуры и функции для работы со строками
- •Стандартные процедуры и функции для работы с файлами
- •Стандартные процедуры и функции для работы с памятью
- •Системные процедуры и функции
- •Стандартные константы
- •Обзор классов и объектов
- •Конструкторы и деструкторы
- •Свойства
- •Переменная Self
- •Наследование
- •Видимость членов класса
- •Переопределение методов
- •Приведение типов объектов
- •Операции is и as
- •Виртуальные методы и полиморфизм
- •Модуль crt
- •Модуль Timers
- •Модуль Sounds
- •Модуль Utils
- •Модуль PointRect
- •Модуль GraphAbc
- •Графические примитивы
- •Цветовые константы и функции для работы с цветом
- •Действия с пером
- •Действия с кистью
- •Действия со шрифтом
- •Действия с рисунками
- •Действия с графическим окном
- •Задание режимов вывода
- •Класс Picture
- •Описатели рисунков и класс Picture
- •Исполнитель Робот
- •Алгоритмизация
- •Алгоритм и его свойства
- •Способы описания алгоритмов
- •Линейные алгоритмы
- •Разветвляющиеся алгоритмы
- •Алгоритмы циклической структуры
- •Подчиненные алгоритмы
- •Системы программирования
- •Лабораторная работа № 1 Программирование линейных алгоритмов
- •Лабораторная работа № 2 Программирование разветвляющихся алгоритмов
- •Лабораторная работа № 4 Одномерные массивы - вектора
- •Литература Основная литература:
- •Дополнительная литература:
- •Лабораторная работа № 3 Программирование циклических алгоритмов
Модуль Timers
Таймеры позволяют выполнять указанное действие периодически через равные промежутки времени. Процедуры и функции для управления таймерами содержатся в модуле Timers.
Функция CreateTimer(ms,TimerProc) создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc, и возвращает его целочисленный описатель. Созданный таймер сразу же запускается.
Функция CreateTimerExt(ms,TimerProcExt) создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре с одним целочисленнным параметром TimerProcExt, и возвращает его целочисленный описатель. Созданный таймер сразу же запускается. Целочисленный параметр, передаваемый процедуре TimerProcExt, хранит описатель таймера, вызвавшего эту процедуру.
Процедура StartTimer(n) запускает таймер с описателем n.
Процедура StopTimer(n) останавливает таймер с описателем n.
Процедура SetTimerInterval(n,ms) устанавливает у таймера с описателем n интервал в ms миллисекунд.
Функция TimerInterval(n) возвращает интервал у таймера с описателем n.
Функция TimerEnabled(n) возвращает True, если таймер запущен, и False в противном случае.
Процедура DestroyTimer(n) разрушает таймер с описателем n.
Модуль Timers содержит также класс Timer, имеющий следующий интефейс:
type Timer=class constructor Create(ms: integer; TimerProc: procedure); destructor Destroy; procedure Start; procedure Stop; property Enabled: boolean; property Interval: integer; function Handle: integer; end;
Конструкторы и деструкторы |
constructor Create(ms: integer; TimerProc: procedure);
Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc. Созданный таймер сразу же запускается.
constructor Create(ms: integer; TimerProc: procedure);
Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре с одним целочисленнным параметром TimerProc. Созданный таймер сразу же запускается. Целочисленный параметр, передаваемый процедуре TimerProcExt, хранит описатель таймера, вызвавшего эту процедуру.
destructor Destroy;
Разрушает объект и содержащийся в нем таймер.
Свойства |
property Enabled: boolean;
Запущен ли таймер. Присваивание Enabled=False эквивалентно вызову Stop, а присваивание Enabled=True - вызову Start.
Методы |
procedure Start;
Запускает таймер.
procedure Stop;
Останавливаетает таймер.
function Handle: integer;
Возвращает описатель таймера.
Таймеры удобнее рассматривать как объекты класса Timer, в котором собраны все основные действия с таймерами. Такой подход является более удобным и современным, чем подход с описателями таймеров. Единственный его недостаток - необходимость вводить основные понятия, связанные с классами. Подход с описателями позволяет работать с таймерами сразу после рассмотрения темы "Процедуры и функции". Пример 1
Вариант с описателем таймера uses Timers,Events; procedure TimerProc; begin write(1); end; var t: integer; begin t:=CreateTimer(200,TimerProc); end. |
Вариант с классом Timer uses Timers,Events; procedure TimerProc; begin write(1); end; var t: Timer; begin t:=Timer.Create(200,TimerProc); end. |
Для периодического вызова процедуры таймера необходимо после его создания продолжить выполнение приложения. Это можно сделать либо поместив в конце основной программы бесконечный цикл, либо сделав приложение событийным, подключив модуль Events.
Пример 2
Вариант с описателем таймера uses Timers, Events; var t1,t2: integer; procedure TimerProcExt(n: integer); begin if n=t1 then write(1,' ') else write(2,' '); end; begin t1:=CreateTimerExt(200,TimerProcExt); t2:=CreateTimerExt(300,TimerProcExt); end. |
Вариант с классом Timer uses Timers, Events; var t1,t2: Timer; procedure TimerProcExt(n: integer); begin if n=t1.Handle then write(1,' ') else write(2,' '); end; begin t1:=Timer.Create(200,TimerProcExt); t2:=Timer.Create(300,TimerProcExt); end.
|