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

Вниз

сравнить текущее время с заданным DateTimePicker   Найти похожие ветки 

 
Roman_S ©   (2007-03-18 08:46) [0]

Задаю время с помощью DateTimePicker. Подскажите - как при Form.Show задавать в нём текущее время? И, главное, - как сравнить текущее время с заданным в событии OnTimer (микросекунды я не задаю)?


 
Loginov Dmitry ©   (2007-03-18 08:55) [1]

> Подскажите - как при Form.Show задавать в нём текущее время?


DateTimePicker.Time := Time;


> как сравнить текущее время с заданным в событии OnTimer


>, <, =, -, +, /, *


 
Roman_S ©   (2007-03-18 09:40) [2]

Просто мне хочется разобраться!
Люди пишут:

1. Время хранится в Double
The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.
поэтому точность там по крайней мере миллисекунда. А в TDateTimePicker вводить время можно только до секунды.
Как ни старайся, сравнение с Now будет всегда не равным. Нужно приводить все к одному формату.

2. Сравнивать с now напрямую можно только на > или <. Но нужно еще учитывать, что если
TDateTimePicker.Kind=dtkTime, то пользователем меняется только составляющая времени в TDateTimePicker.Time,
хотя тип поля TDateTime; дата там подставляется из поля TDateTimePicker.Date - ее нужно отслеживать в коде.

Так как-же правильно? Где учитывать дату, милисекунды... где писать Time, где Now?
Как правильно сранивать время?


 
Virgo_Style ©   (2007-03-18 09:59) [3]

1. не проверять на равенство, или проверять с определенной точностью: |Now-SomeTime|<Delta
2. Намек : Время - это дробная часть, а выделить ее - дело несложное.


 
Ант   (2007-03-18 12:36) [4]

ЧТо за бред - сравнить текущее время с тем который ввел пользователь
то есть если ты например даже с точностью до секунды  сравниваешь
то через секунду повторный запуск процедуры уже вернет False
Если же речь идет о сравнении дат, то  |Now-SomeTime|<1


 
Roman_S ©   (2007-03-18 13:27) [5]

Почти получилось так:
procedure TForm2.Timer1Timer(Sender: TObject);
var
 Hour1, Min1, Sec1, MSec1: Word;
 Hour2, Min2, Sec2, MSec2: Word;
begin
DecodeTime(Time, Hour1, Min1, Sec1, MSec1); // Раскодировать текущее время
DecodeTime(DateTimePicker1.Time, Hour2, Min2, Sec2, MSec2);
if (Hour1 = Hour2) and (Min1 = Min2)
then begin
  ShowMessage("Получилось!");
  Timer1.Enabled:=false;
end;
end;

Сообщение выводится почему-то 6 раз: "Получилось!" Что не так?
Скажите, пожалуйста - как в DateTimePicker показавать/задавать только часы и минуты? И как обойтись без лишних переменных:
var
 Hour1, Min1, Sec1, MSec1: Word;
 Hour2, Min2, Sec2, MSec2: Word;


 
RASkov   (2007-03-18 13:34) [6]

> Скажите, пожалуйста - как в DateTimePicker показавать/задавать
> только часы и минуты?

DateTimePicker.Format:="hh ч. : mm м."


 
Anatoly Podgoretsky ©   (2007-03-18 13:39) [7]

> Roman_S  (18.03.2007 13:27:05)  [5]

Таймер на 100 мсек


 
RASkov   (2007-03-18 13:39) [8]

> Сообщение выводится почему-то 6 раз: "Получилось!" Что не
> так?

Шесть раз в минуту срабатывает таймер
Поставь интервал по меньше и будет больше 6 раз


 
RASkov   (2007-03-18 13:52) [9]

> [7] Anatoly Podgoretsky ©   (18.03.07 13:39)


> if (Hour1 = Hour2) and (Min1 = Min2)


> Таймер на 100 мсек

Interval=10000 все-таки наверное...

> И как обойтись без лишних переменных:

Ну например незачем делать каждый раз DecodeTime(DateTimePicker1.Time, Hour2, Min2, Sec2, MSec2); Глобальные переменные или свойства(поля) формы задействовать.


 
Roman_S ©   (2007-03-18 18:52) [10]

Ну например незачем делать каждый раз DecodeTime(DateTimePicker1.Time, Hour2, Min2, Sec2, MSec2); Глобальные переменные или свойства(поля) формы задействовать.

- это дельный совет, СПАСИБО!


 
Johnmen ©   (2007-03-18 20:17) [11]

Trunc(Frac(TimeVariable)*24) - часы
Trunc(Frac(TimeVariable-часы/24)*24*60) - минуты



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

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

Наверх




Память: 0.49 MB
Время: 0.031 c
15-1173676057
ryslan56
2007-03-12 08:07
2007.04.08
Делфи и Сссоздание сайтов


15-1174072515
ArtemESC
2007-03-16 22:15
2007.04.08
Nekojiro Sou


15-1173552340
Loginov Dmitry
2007-03-10 21:45
2007.04.08
GALA


2-1174118100
Boker
2007-03-17 10:55
2007.04.08
TImage - невозможна загрузка ...??


6-1161452263
_stdcall
2006-10-21 21:37
2007.04.08
Разборка FLAP пакетов.