![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос связан с перехватом времени [D7, WinXP]
-=Germe$=- © (2006-07-14 16:22:00)Как перехватить изменение времени без использования TTimer
Ketmar (2006-07-18 20:54:00) [1]>Palladin © (18.07.06 13:49) [24]
не будет грузить. но может "заикаться". т.е. вызовы могут теряться, если система сильно загружена. впрочем, "это уже совсем другая история" (ц), и решается по-другому. %-)
Palladin (2006-07-18 13:49:00) [2]
> Dib@zol
Да ёшкин лес, разница между сравнением двух GetTickCount и двух переменных TDateTime практически никакая. И он в юните Windows.
> -=Germe$=- ©
Сомневаюсь что TTimer с установленным интервалом в 1000 мс будет жутко грузить процессор.
Dib@zol (2006-07-18 13:45:00) [3]Да ёшкин лес, используй GetTickCount!!!! Помоему он в юните MMSystem...
begin...end (2006-07-14 20:29:00) [4]> -=Germe$=- © (14.07.06 19:33) [16]
Зачем постоянно сверять? Установите соответствующий интервал таймера, чтобы он сработал один раз, когда нужное событие наступит, и всё. Если по каким-то причинам не устраивает TTimer (который является обёрткой SetTimer), можно использовать CreateWaitableTimer/SetWaitableTimer.
Zeqfreed (2006-07-14 19:52:00) [5]> [20] -=Germe$=- © (14.07.06 19:50)
Все остается в силе. Если уж процессору будет некогда выполнять событие, то его не выполнить никаким способом.
-=Germe$=- (2006-07-14 19:50:00) [6]А если машинка слабая?
Zeqfreed (2006-07-14 19:47:00) [7]> [18] -=Germe$=- © (14.07.06 19:44)
Точности обычного таймера для этого вполне хватит. Абсолютнойточности в Windows не добиться.
-=Germe$=- (2006-07-14 19:44:00) [8]В определенное время должно произоити событие(сам его напишу)... Нужно это время с точностью до секунды схватить
Zeqfreed (2006-07-14 19:37:00) [9]-=Germe$=- © (14.07.06 19:33) [16]
Поэтому я и спрашиваю в чем состоит цель «перехвата», чтобы подсказать наиболее подходящее решение.
-=Germe$=- (2006-07-14 19:33:00) [10]ПОстоянно сверять время в TTimer не самый лучший вариант.... Можно пропустить нужное событие....
Zeqfreed (2006-07-14 19:30:00) [11]> [14] -=Germe$=- © (14.07.06 19:26)
TTimer сам по себе ничего не грузит. Если что-то и может загружать процессор, то это тело события OnTimer, целиком подвластное к изменению программистом.
-=Germe$=- (2006-07-14 19:26:00) [12]
> Какая стоит задача? Для чего это нужно? И почему не удовлетворяет
> TTimer?
Проц грузит...
Zeqfreed (2006-07-14 19:25:00) [13]> [12] -=Germe$=- © (14.07.06 19:22)
Какая стоит задача? Для чего это нужно? И почему не удовлетворяет TTimer?
-=Germe$=- (2006-07-14 19:22:00) [14]Факт изменения системного времени на 1 секунду было 00:00:00 стало 00:00:01
Zeqfreed (2006-07-14 18:12:00) [15]
procedure TimeChangeHook();
begin
ShowMessage('Произошло очередное изменение времени!');
end;
while true do TimeChangeHook();
StriderMan (2006-07-14 17:32:00) [16]че-то туплю...
достаточно TThread со sleep'ом
StriderMan (2006-07-14 17:26:00) [17]
> Не боишься загрузить компьтер на полную только обработкой
> этого цикла?
sleep туда пихнуть
Desdechado (2006-07-14 17:25:00) [18]> цикл сравнения времени
Не боишься загрузить компьтер на полную только обработкой этого цикла?
StriderMan (2006-07-14 17:22:00) [19]Thread, в нем цикл сравнения времени начала цикла(DateTime) с Now
begin...end (2006-07-14 17:22:00) [20]Что значит "перехватить изменение времени"?