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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
11-1111888181
Ripper
2005-03-27 05:49
2005.11.20
Проблема с Dll


3-1129003870
k2
2005-10-11 08:11
2005.11.20
Oracle9. ORA-03113


2-1131269512
Максим
2005-11-06 12:31
2005.11.20
"Тихая" установка сервиса


2-1131025415
Eksell
2005-11-03 16:43
2005.11.20
Kak podshitati v faile kolichestvo naprimer simvolov #


6-1123018178
vitorg
2005-08-03 01:29
2005.11.20
Уникальность входящего dialup





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