Главная страница
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.013 c
1-70695
Дмитрий Селищев
2002-07-11 07:00
2002.07.22
Доступ к другому приложению.


1-70803
Eugene Lachinov
2002-07-10 11:14
2002.07.22
Ошибка компилятора ?


14-70863
Proton
2002-06-23 19:39
2002.07.22
контролы как в corel draw


14-70901
DelBoy
2002-06-23 17:24
2002.07.22
Прога, которая сворачивается подобно ISQ


14-70876
Skywalker
2002-06-24 13:29
2002.07.22
Ord