![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
часы
роша © (2004-04-13 20:57:00)как сделать чысы?
(2005-01-12 10:34:00) [1]Удалено модератором
Vasya.ru (2004-12-30 21:39:00) [2]-=SS=- © (12.12.04 12:34) [11]
GetTickCount - помойму это количество секунд прошедших после загрузки.
делаешь цикл
Промахнулся
-=SS=- (2004-12-12 12:34:00) [3]
GetTickCount- помойму это количество секунд прошедших после загрузки.
делаешь цикл
X0 := GetTickCount;
repeat
If XO< GetTickCount Then
Begin
Xo := GetTickCount;
PostMessage(Handle, WM_User+15,0, 0);
End;
Application.ProcessMessage;
until Application.Terminated;
Потом обрабатываешь сообщение WM_User + 15
PS : Писал на память так что извеняйте за допущеные синтаксические ошибки.
req (2004-12-12 08:22:00) [4]То что вы хотите получить осуществить нельзя, если вам нужна высокая точность. Это можно реализовать только с помощью дополнительного аппаратного обеспечения получающего сигналы точного времени и вырабатывающее определённые сигналы. Уменьшить частоту опроса таймера может поможет, но всё равно вы будете отрабатывать ваш код не в точно указанное время. Плюс минус интервал таймера, как напишите. К тому же таймер негарантированно срабатывает в указанный интервал. Windows это операционная система не реального времени.
Возмите таймер с интервалом 1 секунда и посмотрите сколько раз он сработает примерно за 8 часов и сравните со временем на компьютере.
IceBeerg (2004-11-24 18:06:00) [5]как точно реализовать незнаю, но винду можно попросить известить программу о наступлении какого либо события, с том числе и достижения определенного времени. Взять текущее врем -> текущее время +10 секунд -> сообщение винде, чтобы ивестила когда будет это текущее +10 -> ловим сообщение от винды и синхронизируем свой таймер.
А можно с интервалом в 100 например мс проверять не изменилось ли время и если изменилось, то разница с твоими часами будет всего лишь от 0 до 100 мс.
zark (2004-05-28 00:36:00) [6]Для этого делаешь интервал TTimer меньше и все проблемы.
Сызганов Н.А. (2004-05-20 09:37:00) [7]Я не об этом спрашивал.
Засинхронизировать с системным временем - это значит,
что таймер должен тикать только в те моменты,когда в
системном времени происходит смена секунды,минуты или часа,
а не между ними.
А для этого в моменты смены у системного времени
секунды,минуты или часа необходимо формировать события
или использовать существующие,если они есть.
В этом и состоит мой вопрос.
Manulo (2004-05-18 15:24:00) [8]Да, только не забудь в этом случае в
UsesпрописатьDateUtil
Gu (2004-05-18 14:56:00) [9]procedure TForm1.Timer1On....
begin form1.caption:=datetimetostr(Now);end;
~ls (2004-05-18 08:37:00) [10]Можно сделать так:
procedureTForm.TimerTimer......
begin
//время
TimeLabel.Caption:=FormatDateTime(LongTimeFormat, time);
//датаDateLabel.Caption:=FormatDateTime(LongDateFormat, now);
end;
(Timer:TTimer
TimeLabel:TLabel
DateLabel:TLabel)
Scrip (2004-05-17 16:46:00) [11]Нажимаешь на TTimer двойным щелчком, интервал ставишь 1000(т.е. 1 секунда и пишешь так:
x:=Timetostr(time);
Edit1.Text:=x;
незабудь в разделе объявления переменных прописать переменную х типа string
Это самый простецкий способ, но его можно усовершенствовать. Это уже зависит от твоей фантазии
Сызганов Н.А. (2004-05-17 09:57:00) [12]А как засинхронизировать такие часы с системным временем:
есть ли в Windows события для секундных,минутных или часовых
меток ?
Rouse_ (2004-04-20 18:50:00) [13]При помощи TTimer