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

Вниз

Одно и тоже значение при сравнении не совпадает.   Найти похожие ветки 

 
vajo   (2005-10-06 14:57) [0]

Есть две переменные Log1 и Log2 : Real
Есть таблица Tab1. Поле Time - Numeric 17 знаков и после запятой 15. Log1 - тоже получается 15 знаков после запятой.

Log1:=EncodeTime(Hour, Min, Sec, 00);
Tab1.Append;
Tab1.FieldValues["Time"]:=Log1;
Tab1.Post;

Tab1.First;
For j:=1 To Tab1.RecordCount Do
  begin
     LogTime2:=Tab1.FieldByName("Time").AsFloat;
     meLog.Lines.Add( " Проверка: "+FloatToStr(Log2)+" - "+FloatToStr(Log1));
     IF Log2=Log1 Then
        begin
           meLog.Lines.Add( "OK");
        end
       else
        begin
           meLog.Lines.Add( " No ");
        end;
     Tab1.Next;
  end;


И вот почемуто не происходит положительно результата. Т.е. записал значение, а при проверке оказывается что его там нет, хотя в meLog видно, что значения одинаковые.


 
ANB ©   (2005-10-06 15:01) [1]

LogTime2:=Tab1.FieldByName("Time").AsFloat;
    meLog.Lines.Add( " Проверка: "+FloatToStr(Log2)+" - "+FloatToStr(Log1));
    IF Log2=Log1 Then
- Странный код какой то. Копируем в LogTime2, а сравниваем Log2. Имхо - где то в погрешности дело. Или в типах несостыковка. Приведенный код не полон и не верен.


 
sniknik ©   (2005-10-06 15:09) [2]

точное сравнение для типов с плавающей запятой непременимо. иши статью на королевстве дельфи по теме.


 
Курдль ©   (2005-10-06 15:12) [3]


> For j:=1 To Tab1.RecordCount Do


Кажись лучше
while not Tabl1.Eof Do

А вот где Log2 Log1 инициализируются - не понятно :(


 
vajo   (2005-10-06 15:19) [4]

> ANB
LogTime2:=Tab1.FieldByName("Time").AsFloat;
это
Log2:=Tab1.FieldByName("Time").AsFloat; это я сократил чтобы короче было.

>Курдль
Log1:=EncodeTime(Hour, Min, Sec, 00);
Log2:=Tab1.FieldByName("Time").AsFloat;


 
Курдль ©   (2005-10-06 15:29) [5]

А к чему извращаться с Float, если можно все объявить, как DateTime?


 
Johnmen ©   (2005-10-06 15:33) [6]

http://www.delphikingdom.com/asp/viewitem.asp?UrlItem=/helloworld/reals.htm


 
Seg   (2005-10-06 15:33) [7]

Может все-таки привести весь код в студию?


 
vajo   (2005-10-06 17:11) [8]

Вообще я хотел чтобы в колонке таблицы были и время и дата. В DBF есть тип дата, поэтому время я начал хранить в колонке Time.
В цикле я просто сравниваю значения на предмет повторного времени.
Собственно это и есть код.

Log1:=EncodeTime(Hour, Min, Sec, 00);
Tab1.Append;
Tab1.FieldValues["Time"]:=Log1;
Tab1.Post;

Tab1.First;
For j:=1 To Tab1.RecordCount Do
 begin
    Log2:=Tab1.FieldByName("Time").AsFloat;
    meLog.Lines.Add( " Проверка: "+FloatToStr(Log2)+" - "+FloatToStr(Log1));
    IF Log2=Log1 Then
       begin
          meLog.Lines.Add( "OK");
       end
      else
       begin
          meLog.Lines.Add( " No ");
       end;
    Tab1.Next;
 end;


 
Seg   (2005-10-06 17:20) [9]

Log2:=Tab1.FieldByName("Time").AsFloat;

Возможно, что Log2 в этом случае является ссылкой.

попробуй сравнивать
IF Tab1.FieldByName("Time").AsFloat=Log1 Then


 
sniknik ©   (2005-10-06 17:21) [10]

голос разума в данной ветке фактически отсутствует... ;)
см.
sniknik ©   (06.10.05 15:09) [2]
Johnmen ©   (06.10.05 15:33) [6]

проверим на практическую сметку...
DateUtils
CompareTime


 
Курдль ©   (2005-10-06 17:24) [11]


> Seg   (06.10.05 17:20) [9]
> Log2:=Tab1.FieldByName("Time").AsFloat;
> Возможно, что Log2 в этом случае является ссылкой.


???????? 8-()


 
msguns ©   (2005-10-06 17:24) [12]

>vajo   (06.10.05 17:11) [8]
>Log1:=EncodeTime(Hour, Min, Sec, 00);

Unit

SysUtils

Category

date/time routines

function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;


>Log2:=Tab1.FieldByName("Time").AsFloat

>IF Log2=Log1 Then

Что с чем сравниваем: тонны с километрами ?


 
AlexWlad ©   (2005-10-06 19:56) [13]

Немного оффтоп, но по моим наблюдениям, тема сравнения 2-х чисел с плавающей точкой скоро станет популярнее "туда где часики".



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

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

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1130716847
akim
2005-10-31 03:00
2005.11.20
DbGrid


8-1120128938
КиТаЯц
2005-06-30 14:55
2005.11.20
Как обрезать картинку?


1-1130407173
WondeRu
2005-10-27 13:59
2005.11.20
Как сделать потомка ActiveX формы?


5-1110285566
GuAV
2005-03-08 15:39
2005.11.20
procedure TCustomImageList.DefineProperties(Filer: TFiler);


1-1130509068
agent
2005-10-28 18:17
2005.11.20
поиск файлов, создание дерева каталогов