Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сравнение двух TDateTime ??? [D7]


Цукор5 ©   (2007-10-26 00:01:00) 


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 12:46:00) [1]


>  [6] Германн ©   (26.10.07 01:01)
>
> > Сусл ©   (26.10.07 00:38) [5]
>
> Поздравляю, Дима! Ты вспомнил таки.
> :-)

тебе скушно?


Германн   (2007-10-26 01:01:00) [2]


> Сусл ©   (26.10.07 00:38) [5]

Поздравляю, Дима! Ты вспомнил таки.
:-)


Сусл   (2007-10-26 00:38:00) [3]

почитай на www.delphikingdom.ru есть статья про вещественные числа
автор Антон Григорьев. По идее каждому эту статью надо прочесть.

точную ссылку не дам, сам ищи...


Юрий Зотов   (2007-10-26 00:37:00) [4]

Боже...


Цукор5   (2007-10-26 00:25:00) [5]

2 Сусл ©   (26.10.07 00:04) [1]

>abs(hDate-D) < 0.0001

а нужно abs(hDate-D) < 0.00001!
Количеством нулей ошибся ;)


Цукор5   (2007-10-26 00:14:00) [6]

2 Сусл ©
>или сравнивай abs(hDate-D) < 0.0001

Что-то этот вариант не работает.


Сусл   (2007-10-26 00:04:00) [7]

причина в том, что нельзя стравнивать числа с плавающей точкой равенством. это их особенности.

если с точностью до даты, то trunc сделай перед сравнением или сравнивай
abs(hDate-D) < 0.0001


Наверх

Титульная страница Поиск, карта сайта Написать письмо