Форум: "Базы";
Текущий архив: 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;
- Странный код какой то. Копируем в LogTime2, а сравниваем Log2. Имхо - где то в погрешности дело. Или в типах несостыковка. Приведенный код не полон и не верен.
meLog.Lines.Add( " Проверка: "+FloatToStr(Log2)+" - "+FloatToStr(Log1));
IF Log2=Log1 Then
← →
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.037 c