Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.047 c
4-1107302590
Green_Templar
2005-02-02 03:03
2005.03.20
OpenPictureDialog


6-1105529569
Diaskhan
2005-01-12 14:32
2005.03.20
Как написать клиент отправки почты под ИНДИ


1-1109835811
Walker
2005-03-03 10:43
2005.03.20
Rave reports


1-1109868919
Seeker
2005-03-03 19:55
2005.03.20
TListWiew Selected


1-1110357304
Начинающий2
2005-03-09 11:35
2005.03.20
SHGetSpecialFolderLocation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский