Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2010, 12:16   #11
krGorka
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 35
По умолчанию

Mожет несовсем в тему :есть функция мультимедийного таймера timeSetEvent, которая позволяет создать таймер с интервалом от 1 мс. Короткое описание с инета:
Сначала готовится процедура обратного вызова (call back) с таким заголовком:
procedure TimeProc(uID, uMsg: UINT; dwUser, dwi, dw2: DWORD);
stdcall;
Здесь uID - идентификатор события таймера (см. ниже); uMsg - не используется; dwuser - произвольное число, передаваемое процедуре в момент запуска таймера; dwi, dw2 - не используются.

Запуск таймера реализуется функцией
function timeSetEnet(uDelay, uResolution: UINT;
IpTimeProc:Pointer;
dwUser: DWORD;
fuEvent: UINT): UINT;
stdcall;
external 'winmm.dll';
Здесь uDelay - требуемый период срабатывания таймера (в мс);
uResolution - разрешение таймера; значение 0 означает, что события срабатывания таймера будут возникать с максимально возможной частотой; в целях снижения нагрузки на систему вы можете увеличить это значение; IpTimeProc - адрес процедуры обратного вызова; dwUser - произвольное число, которое передается процедуре обратного вызова и которым программист может распоряжаться по своему усмотрению; fuEvent - параметр, управляющий периодичностью возникновения события таймера: time_oneshot (0) - событие возникает только один раз через uDelay мс; time_periodic (1) - события возникают периодически каждые uDelay мс. При успешном обращении функция возвращает идентификатор события таймера или 0, если обращение было ошибочным.
Таймер останавливается, и связанные с ним системные ресурсы освобождаются функцией
function timeKillEvent(uID: UINT): UINT;
stdcall; external 'winmm.dll';
Здесь uID - идентификатор события таймера, полученный с помощью timeSetEvent.


В TimeProc можно было бы расчитывать твои Updatedann через 5 млс
krGorka вне форума Ответить с цитированием
Старый 07.09.2010, 12:56   #12
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

А почему бы не использовать WaitForSingleEvent?
TwiX вне форума Ответить с цитированием
Старый 07.09.2010, 13:03   #13
Dasverd2010
 
Регистрация: 01.09.2010
Сообщений: 5
По умолчанию

Парни, sleep() производит задержку 5 милисекунд, и 1 милисекунду, вот только я, не правильно замерял.

В посте выше, я описал, как правильно замерять скорость выполнения функции.

TwiX, про WaitForSingleEvent не слышал, можете подробнее описать...

Последний раз редактировалось Dasverd2010; 07.09.2010 в 13:11.
Dasverd2010 вне форума Ответить с цитированием
Старый 07.09.2010, 14:29   #14
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Полезная штука для потоков. СОздаётся переменная типа TEvent(или что-то подобное). В конце синхронизации активируем этот ивент, вроде так: SetEvent. А Вашей функции заменяем слип на WaitForSingleEvent(MyEvent) - эта строка будет ждать включения MyEvent в синхронизированной процедуре.

Что бы узнать поподробней, то просто вбейте в справку WaitForSingleEvent, или в гугл
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как округлить милисекунды в кол-во сек и мили сек? XerSon Общие вопросы Delphi 2 09.06.2010 10:26
Как приостаносить поток до события в другом потоке Sionus Помощь студентам 2 30.03.2010 21:51
как сделать паузу (или задержку) в цыкле : с# Natok Помощь студентам 7 30.05.2009 12:55
Число N, заменить одну из его цифр, чтобы получилось число, max близкое к некоторой степени двойки urgu_st Помощь студентам 13 23.10.2007 09:14
Как организовать задержку выполнения?? Kenifer Общие вопросы Delphi 12 03.09.2007 21:56