Форум: "Начинающим";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Вниз
часы Найти похожие ветки
← →
роша © (2004-04-13 20:57) [0]как сделать чысы?
← →
Rouse_ © (2004-04-20 18:50) [1]При помощи TTimer
← →
Сызганов Н.А. (2004-05-17 09:57) [2]А как засинхронизировать такие часы с системным временем:
есть ли в Windows события для секундных,минутных или часовых
меток ?
← →
Scrip (2004-05-17 16:46) [3]Нажимаешь на TTimer двойным щелчком, интервал ставишь 1000(т.е. 1 секунда и пишешь так:
x:=Timetostr(time);
Edit1.Text:=x;
незабудь в разделе объявления переменных прописать переменную х типа string
Это самый простецкий способ, но его можно усовершенствовать. Это уже зависит от твоей фантазии
← →
~ls © (2004-05-18 08:37) [4]Можно сделать так:
procedure TForm.TimerTimer......
begin
//время
TimeLabel.Caption:=FormatDateTime(LongTimeFormat, time);
//датаDateLabel.Caption:=FormatDateTime(LongDateFormat, now);
end;
(Timer:TTimer
TimeLabel:TLabel
DateLabel:TLabel)
← →
Gu (2004-05-18 14:56) [5]procedure TForm1.Timer1On....
begin form1.caption:=datetimetostr(Now);end;
← →
Manulo © (2004-05-18 15:24) [6]Да, только не забудь в этом случае в
Uses
прописатьDateUtil
← →
Сызганов Н.А. (2004-05-20 09:37) [7]Я не об этом спрашивал.
Засинхронизировать с системным временем - это значит,
что таймер должен тикать только в те моменты,когда в
системном времени происходит смена секунды,минуты или часа,
а не между ними.
А для этого в моменты смены у системного времени
секунды,минуты или часа необходимо формировать события
или использовать существующие,если они есть.
В этом и состоит мой вопрос.
← →
zark (2004-05-28 00:36) [8]Для этого делаешь интервал TTimer меньше и все проблемы.
← →
IceBeerg © (2004-11-24 18:06) [9]как точно реализовать незнаю, но винду можно попросить известить программу о наступлении какого либо события, с том числе и достижения определенного времени. Взять текущее врем -> текущее время +10 секунд -> сообщение винде, чтобы ивестила когда будет это текущее +10 -> ловим сообщение от винды и синхронизируем свой таймер.
А можно с интервалом в 100 например мс проверять не изменилось ли время и если изменилось, то разница с твоими часами будет всего лишь от 0 до 100 мс.
← →
req (2004-12-12 08:22) [10]То что вы хотите получить осуществить нельзя, если вам нужна высокая точность. Это можно реализовать только с помощью дополнительного аппаратного обеспечения получающего сигналы точного времени и вырабатывающее определённые сигналы. Уменьшить частоту опроса таймера может поможет, но всё равно вы будете отрабатывать ваш код не в точно указанное время. Плюс минус интервал таймера, как напишите. К тому же таймер негарантированно срабатывает в указанный интервал. Windows это операционная система не реального времени.
Возмите таймер с интервалом 1 секунда и посмотрите сколько раз он сработает примерно за 8 часов и сравните со временем на компьютере.
← →
-=SS=- © (2004-12-12 12:34) [11]
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 : Писал на память так что извеняйте за допущеные синтаксические ошибки.
← →
Vasya.ru © (2004-12-30 21:39) [12]-=SS=- © (12.12.04 12:34) [11]
GetTickCount - помойму это количество секунд прошедших после загрузки.
делаешь цикл
Промахнулся
← →
имя (2005-01-12 10:34) [13]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.421 c