Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Реализация функции Delay

Delphi , Синтаксис , Дата и Время

Реализация функции Delay

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch


procedure Delay(dwMilliseconds: Longint);
 var
   iStart, iStop: DWORD;
 begin
   iStart := GetTickCount;
   repeat
     iStop := GetTickCount;
     Application.ProcessMessages;
   until (iStop - iStart) >= dwMilliseconds;
 end;

Here's the translation of the text into Russian:

Классика! Процедура Delay - простой пример реализации функции задержки в Delphi, которая приостанавливает выполнение программы на указанный количество миллисекунд.

Вот разбивка того, что код делает: 1. Он определяет две переменные: iStart и iStop, обе типа DWORD. Они будут использоваться для измерения времени, прошедшего с начала задержки. 2. Процедура начинает с вызова GetTickCount, чтобы получить текущий счетчик тиков, представляющий количество миллисекунд, прошедших с момента запуска Windows. Это значение хранится в iStart. 3. Затем процедура enters цикл, который продолжается до тех пор, пока разница между iStop и iStart (измеренная в тиках) не будет больше или равна указанному времени задержки (dwMilliseconds). 4. Внутри цикла вызывается GetTickCount, чтобы получить текущий счетчик тиков, который хранится в iStop. 5. После обновления iStop, процедура вызывает Application.ProcessMessages, чтобы обработать любые pending сообщения (например, от других потоков или окон). Это обеспечивает, что программа остается интерактивной и не блокируется. 6. Цикл повторяется до тех пор, пока условие задержки не будет выполнено.

Почему используется GetTickCount вместо простой функции сна (например, Sleep) - это потому, что приложения Delphi часто требуют поддержки интерактивности и реакции на события, такие как клики мыши или ввод клавиатуры. Вызов Application.ProcessMessages обеспечивает, что программа остается интерактивной во время задержки.

Вот альтернативное решение с использованием Sleep из Windows API:

procedure Delay(dwMilliseconds: Longint);
begin
  Sleep(dwMilliseconds);
end;

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

Программист DeeCo представил реализацию функции Delay на языке Delphi, которая задерживает выполнение программы на указанное количество миллисекунд с помощью цикла и функции GetTickCount.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Дата и Время ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 02:24:06/0.0075709819793701/2