Пример использования таймера
Данная программа выводит 1 каждые 100 миллисекунд в течение 3 секунд:
uses Timers; procedure TimerProc; begin write(1); end; begin var t := new Timer(100,TimerProc); t.Start; Sleep(3000); end.
Вызов Sleep здесь обязателен, иначе программа после создания таймера сразу закончится, и обработчик таймера ни разу не сработает.
Модуль Timers
Модуль Timers содержит класс Timer , позволяющий выполнять определенные действия через равные промежутки времени. В конструкторе класса Timer указывается промежуток времени и имя процедуры без параметров — обработчика события таймера, вызываемой через указанный промежуток времени.
Класс Timer имеет следующий интерфейс:
type
Timer = class
constructor (ms: integer; TimerProc: procedure);
procedure Start;
procedure Stop;
property Enabled: boolean read write;
property Interval: integer read write;
end;
Члены класса Timer описаны в следующей таблице:
constructor (ms: integer; TimerProc: procedure); Создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc , называемой обработчиком таймера . Созданный таймер необходимо запустить, вызвав метод Start |
procedure Start; Запускает таймер |
procedure Stop; Останавливаетает таймер |
property Enabled: boolean read write; Запущен ли таймер |
property Interval: integer read write; Промежуток времени между вызовами обработчика таймера |
Delay
Модуль DOS. Текущее время с дискретностью 10 секунд. (Процедуру Delay — нельзя.)
В окне показывается текущее время с дискретностью 10 с ( часы, минуты, секунды ) в трех часовых .
Либо readkey, либо delay
Вообщем я хочу что бы надпись пропадала через 5 секунд или сразу после нажатия любой клавиши! Как.
Delay ?!
Бодрый день! Есть вопрос/проблема с программированием задержек. Дино: МК — PIC18F452, 20МГц.
delay
Подскажите, как сделать задержку по времени в ходе выполнения программы?
Как сделать задержку в паскале abc
Параметр MS — число миллисекунд.
Время, на которое процедура Delay задерживает выполнение программы является приближенным значением параметра MS, так что задержка не будет длиться ровно MS миллисекунд.
Например, Delay(1000) не будет задерживать программу ровно на 1 секунду.
Известные проблемы
В фирменных версиях Turbo Pascal на современных компьютерах может возникать ошибка 200: деление на ноль , поэтому популярны патчи, устраняющие эту проблему. Самый популярный патч устраняет ошибку 200 , но при этом создаёт другую проблему: длительность Delay сильно уменьшается, непредсказуемо, причём. Большинство патчей различаются в том, как именно пропатчена процедура Delay. Помимо самого популярного патча есть и другие, увеличивающие разрядность счётчика. Попытка хороша, но работает это только в настоящей однозадачной среде DOS, а в среде Windows использовать на 100% процессор — не нормально, к тому же, процессорное время, выделенное конкретной программе, может отличаться при разной нагрузке.
В School Pak из множества вариантов был выбран такой, который ориентируется только на системное время и при этом пытается разгрузить процессор во время ожидания. Это работает и в NTVDM , и в School Pak . В обычном DOSBox длительность Delay в пропатченных программах не изменяется, но процессор загружен, поэтому специально для School Pak был написан резидент IDLE.COM, разгружающий процессор во время простоев (а это основное состояние интерактивных программ).
Скачать пропатченный CRT.TPU
CRT.TPU обычно находится внутри библиотеки TURBO.TPL. При большом желании вы можете извлекать и помещать обратно модули .TPU с помощью утилиты TPUMOVER. Мы, однако, решили не плодить путаницу и предоставляем для скачивания только TURBO.TPL целиком.
См. также
Пример
Язык:
Русский
English