Главная страница
    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.034 c
14-1130139989
ilya39
2005-10-24 11:46
2005.11.20
Фриц Оньон Основы ASP.NET с примерами на C#


3-1128778466
alpine
2005-10-08 17:34
2005.11.20
Через что лучше установить соединение с MySQL ?


14-1130462615
Джо
2005-10-28 05:23
2005.11.20
Ох, нелегкая это работа...


14-1130311715
TUser
2005-10-26 11:28
2005.11.20
Доступ к папке


1-1130499343
Шурик Ш
2005-10-28 15:35
2005.11.20
Вопрос про события TValueListEditor





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