Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

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

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

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


 // 4. Combined Delay 

{ 
  Including the Sleep in the loop prevents the app from hogging 
  100% of the CPU for doing practically nothing but running around the loop. 
}

 procedure PauseFunc(delay: DWORD);
 var
   lTicks: DWORD;
 begin
   lTicks := GetTickCount + delay;
   repeat
     Sleep(100);
     Application.ProcessMessages;
   until (lTicks <= GetTickCount) or Application.Terminated;
 end;

Here's the translation of the text into Russian:

Процедура PauseFunc - это реализация функции задержки выполнения в Delphi, также известной как "задержка" или "пауза". Эта функция использует вызов API GetTickCount, чтобы получить текущий системный счётчик tick, а затем enters цикл, где она спит на 100 миллисекунд (используя процедуру Sleep) и обрабатывает любые pending приложения сообщения (используя Application.ProcessMessages). Цикл продолжается до тех пор, пока не будет достигнута заданная задержка или приложение будет остановлено.

Вот разбивка того, что код делает:

  1. lTicks := GetTickCount + delay;: эта строка устанавливает локальную переменную lTicks в текущий системный счётчик tick плюс заданная задержка (в миллисекундах). Это значение представляет собой целевое время, когда функция должна завершить свое выполнение.
  2. Цикл repeat: этот цикл будет продолжаться до тех пор, пока не будет достигнута условие в стatement until или приложение будет остановлено.

Внутри цикла:

  1. Sleep(100);: эта строка вызывает программу на паузу выполнения на 100 миллисекунд (0,1 секунды). Это позволяет другим задачам выполняться и помогает предотвратить программу от потребления избыточных ресурсов CPU.
  2. Application.ProcessMessages;: эта строка обрабатывает любые pending приложения сообщения, такие как уведомления о событиях или триггеры таймера.

Цикл будет продолжаться до тех пор, пока не будет достигнута одна из следующих условий:

  • Текущий системный счётчик tick (GetTickCount) больше или равно целевому времени (lTicks), что указывает на то, что заданная задержка была достигнута.
  • Application.Terminated истинно, что означает, что приложение было остановлено внешне (например, закрытие окна).

В целом, эта реализация функции задержки выполнения помогает предотвратить зацикливание CPU и позволяет другим задачам выполняться, пока не будет достигнута конкретное количество времени.

В статье описывается реализация функции Delay 4, которая предотвращает зацикливание приложения на выполнении пустого цикла с помощью использования функции Sleep и проверки состояния приложения.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 14:11:40/0.0032649040222168/0