Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технология программирования / ИТ / Лекции_Технология_прогр.doc
Скачиваний:
112
Добавлен:
17.05.2015
Размер:
848.38 Кб
Скачать

§13. Программирование процессов реального времени

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

Для использования показаний системного таймера в системе Delphi имеется специальный тип данных TDateTime и ряд специальных фукнций.

Данные типа TDateTime содержат величины, связанные с датой и(или) временем. Такие величины возникают, например, при использовании стандартных функций Date – получение текущей даты и Time – получение текущего времени. Эти функции не имеют входных параметров и возвращают показания системного таймера.

При необходимости отображать значения типа TDateTime в текстовых объектах их нужно переводить в текстовую форму (подобно тому, как это делалось для числовых данных). Возникает и обратная задача. Для этого в языке Object Pascal имеются специальные функции:

DateToStr – перевод даты в String;

TimeToStr – перевод времени в String;

StrToDate – перевод из String в дату;

StrToTime – перевод из String во время.

Например, если нужно показать текущее время на экране, можно воспользоваться надписью (объект класса TLabel) и следующей инструкцией: Label1.Caption := TimeToStr(Time);

Другой пример: для того чтобы содержимое окна ввода (объект класса TEdit) перевести в форму даты, следует описать в блоке var переменную а:TDateTime; и написать инструкцию: a:=StrToDate(Edit1.Text); Разумеется, если дата введена не в нужном формате, возникнет исключительная ситуация, которую нужно корректно обработать (см. § 14).

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

Процедура DecodeTime(time,h,m,s,ms) выделяет из текущего времени часы, минуты, секунды и миллисекунды.

Процедура DecodeDate(date,year,month,day) выделяет из текущей даты год, месяц и день.

У этих процедур первый параметр входной, а остальные – выходные.

Функция EncodeTime(h,m,s,ms)возвращает время, составленное из числовых значений часов, минут, секунд и миллисекунд в виде величины типа TDateTime.

Функция EncodeDate(year,month,day)возвращает дату, составленную из числовых значений года, месяца и дня в виде величины типа TDateTime.

Отметим, что переменные h, m, s, ms, year, month, day должны иметь тип word (целые неотрицательные числа).

Класс tTimer

Объекты класса TTimer служат для фиксации событий, связанных с течением времени. Свойства объектов этого класса:

Свойство

Тип

Пояснение

Пример

Interval

Integer

Интервал времени в миллисекундах, проходящий между наступлениями события

Timer1.Interval:=1000; Событие наступает каждую секунду

Enabled

Boolean

Активность

Timer1.Enabled:=false;

Таймер не работает

Событие у объектов этого класса одно – onTimer, заключается оно в истечении указанного интервала, т. е. наступает с определенной частотой без участия пользователя.

С помощью таймера можно моделировать движение объектов на экране. Например, для моделирования движения фигуры Shape1 по горизонтали нужна такая программа обработки события onTimer

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Shape1.Left:=Shape1.Left+1;

end;

Соседние файлы в папке ИТ