Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Как написать таймер не зависящий от системного времени   Найти похожие ветки 

 
Zapekank0   (2005-02-26 10:41) [0]

Необходимо что бы (допустим на Label.Caption), показывалось оставшееся время (т.е. шел обратный отсчет, где начальное время равно 1 час), при чем оно не зависило от системного времени. Т.е. если перевести время на системных часах количество оставшегося времени не менялось. Подскажите как это можно реализовать...
ICQ#287390755


 
Anatoly Podgoretsky ©   (2005-02-26 10:45) [1]

Опирайся на GetTickCount оно не зависит от смены времени.


 
Knight ©   (2005-02-26 11:05) [2]

Поставь на монитор будильник... тот точно от компа зависеть не будет... ему даже на его зависания будет наплювать :)


 
Zapekank0   (2005-02-26 11:22) [3]

Пасибо, вариант с будильником является единственным верным ;)


 
Eraser ©   (2005-02-26 13:21) [4]

Zapekank0
вариант с будильником является единственным верным


А чем GetTickCount не устраивает???
Ещё один вариант- синхронизировать через инет. С помощью Indy делается элементарно.


 
Anatoly Podgoretsky ©   (2005-02-26 13:34) [5]

Давай еще и SQL сервер приспособим.


 
webpauk   (2005-02-26 14:20) [6]

А как насчет SetTimer


 
Mim2   (2005-02-27 03:18) [7]

Еще неплохобы все зделать (именно Зделать) все трехмерно :) чтоб все возможности видеокарты использовались :).


 
Юрий Зотов ©   (2005-02-27 06:16) [8]

> Zapekank0 (26.02.05 10:41)  

А чем не устраивает самый обыкновенный TTimer?


 
Anatoly Podgoretsky ©   (2005-02-27 10:38) [9]

Юрий Зотов ©   (27.02.05 06:16) [8]
Этот конечно нужен для организации цикла, но он же не дает никакой информации о времени. Расчитывать на стабильность интервалов, в качестве отсчета тоже не приходится.
Поэтому цикл по TTimer, но независимый отсчет по GetTickCount


 
Defunct ©   (2005-02-27 11:44) [10]

Anatoly Podgoretsky ©   (27.02.05 10:38) [9]

Когда речь идет об задержке в один час, то кому нужна стабильность? Ну будет один отсчет на пару микросекунд больше, второй меньше на столько же. В часу 3600 секунд так что результат будет более менее точный.


 
Zapekank0   (2005-02-27 12:14) [11]

procedure Ttest_form.Timer_TestTimer(Sender: TObject);
begin
//подсчет оставшего времени
      Test_Time:=inttostr(59-minute)+":"+IntToStr(59-sek);
      label5.Caption:=Test_Time;
       sek:=sek+1;
       if sek=60 then
           begin
              sek:=0;
              minute:=minute+1;
           end;
       if minute=60 then
           begin
             minute:=0;
             hour:=hour+1;
           end;
   if hour=1 then
       begin
         Timer_Test.Enabled:=false;
         Test_Time:=inttostr(59-minute)+":"+IntToStr(59-sek);
         Label5.Caption:=Test_Time;
       end;
end;


 
Anatoly Podgoretsky ©   (2005-02-27 12:35) [12]

Defunct ©   (27.02.05 11:44) [10]
Речь идет не о микросекундах, кстати это очень частый вопрос, почему у меня показания по таймеру сильно отстают от системного времени.
Реализация отсчет по GetTickCount настолько тривиальна, что даже говорить не о чем. Заботой таймера будет только обеспечение срабатывания для индикации этого времени.


 
Defunct ©   (2005-03-04 05:23) [13]

Anatoly Podgoretsky ©   (27.02.05 12:35) [12]

Да вы правы, (проверил).  TTimer чувствителен к приостанову основного потока.. Как следствие громаднейшая погрешность.

как вариант спящий поток c tpTimeCritical (погрешность меньше ~0.001 сек в час):


 
Anatoly Podgoretsky ©   (2005-03-04 07:46) [14]

Defunct ©   (04.03.05 05:23) [13]
А смысл? При наличии простого решения - привязка показаний к системным тика, а таймер только для того, что бы получать прерывания с относительной точностью.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.033 c
3-1108833569
Leonardo
2005-02-19 20:19
2005.03.20
Как получить верный результат используя SUM()


3-1108812210
Dr_Wut
2005-02-19 14:23
2005.03.20
Показ полной базы после фильтрования


14-1108381037
boriskb
2005-02-14 14:37
2005.03.20
Любителям поплевать в сторону США


6-1106125547
Чеширский_Кот
2005-01-19 12:05
2005.03.20
Delphi and WAB


3-1108438042
папик
2005-02-15 06:27
2005.03.20
Лог SQL запросов к MS SQL