Текущий архив: 2007.11.18;
Скачать: CL | DM;
Вниз
сравнение двух TDateTime ??? Найти похожие ветки
← →
Цукор5 (2007-10-26 00:01) [0]
private
hTime:DWord;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
hTime:=GetTickCount;
Timer1.Enabled:=True; // Timer1.Interval:=20;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var Q:DWord;
D,hDate:TDateTime;
begin
Q:=GetTickCount-hTime;
D:= Q / (1000 * 60 * 60 *24) ;
Label1.Caption:=DateToStr(D)+"__"+TimeToStr(D);
//
hDate:=EncodeTime(0,0,5,0);
Label2.Caption:=DateToStr(hDate)+"__"+TimeToStr(hDate);
if hDate=D then Windows.Beep(800,200);
end;
по непонятным причинам на одном ПК "событие" происходит, на втором нет.
Тоже самое если условиеhDate-D=0
.
И только если условиеhDate-D<0
, тогда срабатывает на обеих.
В чем причина ???
← →
Сусл © (2007-10-26 00:04) [1]причина в том, что нельзя стравнивать числа с плавающей точкой равенством. это их особенности.
если с точностью до даты, то trunc сделай перед сравнением или сравнивай
abs(hDate-D) < 0.0001
← →
Цукор5 (2007-10-26 00:14) [2]2 Сусл ©
>или сравнивай abs(hDate-D) < 0.0001
Что-то этот вариант не работает.
← →
Цукор5 (2007-10-26 00:25) [3]2 Сусл © (26.10.07 00:04) [1]
>abs(hDate-D) < 0.0001
а нужно abs(hDate-D) < 0.00001 !
Количеством нулей ошибся ;)
← →
Юрий Зотов © (2007-10-26 00:37) [4]Боже...
← →
Сусл © (2007-10-26 00:38) [5]почитай на www.delphikingdom.ru есть статья про вещественные числа
автор Антон Григорьев. По идее каждому эту статью надо прочесть.
точную ссылку не дам, сам ищи...
← →
Германн © (2007-10-26 01:01) [6]
> Сусл © (26.10.07 00:38) [5]
Поздравляю, Дима! Ты вспомнил таки.
:-)
← →
Сусл © (2007-10-26 12:46) [7]
> [6] Германн © (26.10.07 01:01)
>
> > Сусл © (26.10.07 00:38) [5]
>
> Поздравляю, Дима! Ты вспомнил таки.
> :-)
тебе скушно?
Страницы: 1 вся ветка
Текущий архив: 2007.11.18;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.069 c