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

Вниз

Откуда берется секунда TDataTime и Variant ?????????   Найти похожие ветки 

 
MVova ©   (2002-07-10 13:38) [0]

Всем привет.
Есть такой код:

var
D : TDateTime;
DV : Variant;
begin
D := 37447.44574;
DV := D;
Label1.Caption := DateTimeToStr(d);
Label2.Caption := DV;
Label3.Caption := FloatToStr(D);
Label4.Caption := FloatToStr(DV);
end;


после выполнения
Label1.Caption = 10.07.2002 10:41:51
Label2.Caption = 10.07.2002 10:41:52

Откуда 1 сек.?


 
MVova ©   (2002-07-10 13:54) [1]

Это уже експеремент, реально наткнулся вот так:


function GetDateEditBuh(const DT,DID: WideString): TDateTime;
begin
adoGetDateEditBuh.ProcedureName := "DATEEDITBUH" + DT;
adoGetDateEditBuh.Parameters.Clear;
adoGetDateEditBuh.Parameters.CreateParameter("@RID",ftString,pdInput,16,DID);
adoGetDateEditBuh.Parameters.CreateParameter("@DateEditBuh",ftDateTime,pdOutput,0,0);
adoGetDateEditBuh.ExecProc;
Result := adoGetDateEditBuh.Parameters[1].Value;


та квот под отладчиком значкеие
adoGetDateEditBuh.Parameters[1].Value = 10.07.2002 10:41:52
так и должно быть
а DateTimeToStr(Result) = 10.07.2002 10:41:51

Как с этим боротся???


 
Кирилл Усов   (2002-07-10 13:55) [2]

Общеизвестно, что Variant - это очень медленный тип данных. Операции по его преобразованию занимают много времени(по сравнению с integer или string, например). Связано это с тем, что Variant - это есть vInteger, vString, vDateTime, vOLE(!!!) и др. вместе взятые.
Конечно, сомнительно, что это занимает столько времени, но проверить стоит.
Еще посмотри в точности. Если точность 1с, то вопрос исчерпан:) Хотя обычно точность до 1мс:( Смотря какой у тебя комп еще....


 
MVova ©   (2002-07-10 14:11) [3]

Кирилл Усов
Смотря какой у тебя комп еще
Cel 1200 512Mb Win2000Pro
Еще посмотри в точности. Если точность 1с, то вопрос исчерпан
Где и как смотреть?


 
Romkin ©   (2002-07-10 15:20) [4]

в варианте хранится extended, а дата - это double, вот при преобразовании и появляется ошибка округления
Delphi Help - Variant type conversions


 
Eugene Lachinov ©   (2002-07-10 15:27) [5]

Необходимо округлять или обрезать миллисекунды
Label1.Caption := FormatDateTime("HH:MM:SS:ZZZ", d);
10:41:51:936



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
1-70734
Петр Мельников
2002-07-10 23:32
2002.07.22
Как создать компонент, который бы имел все свойства Ttimer.....


14-70860
Chak
2002-06-23 21:15
2002.07.22
Иконка у компонента!


14-70900
Pag
2002-06-21 21:45
2002.07.22
Сокеты


3-70665
_dron_
2002-07-02 13:01
2002.07.22
Создать запрос к 2-м базам Interbase и dbase. Они имеют общие пол


3-70603
Zeidlitz
2002-06-24 03:43
2002.07.22
Импорт данных из *.dbf в Interbase