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

Вниз

сравнить текущее время с заданным 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
15-1174154907
ProgRAMmer Dimonych
2007-03-17 21:08
2007.04.08
В очередной раз попытался научиться 3D-программированию...


2-1174045916
Kolan
2007-03-16 14:51
2007.04.08
А AV в модуле rtl100.bpl что значит ? Дубль два.


2-1174146949
Игорек
2007-03-17 18:55
2007.04.08
функция GetWindowContextHelpID


2-1174295061
wasa
2007-03-19 12:04
2007.04.08
Поля


2-1174132698
Игорек
2007-03-17 14:58
2007.04.08
Сообщения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский