Текущий архив: 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.45 MB
Время: 0.005 c