From c17afffb653efb323e48e9a7f44e6f04774a4b49 Mon Sep 17 00:00:00 2001 From: sergei Date: Wed, 6 Apr 2011 07:08:30 +0000 Subject: [PATCH] * Fixed Variant (containing DateTime) to string conversions. Conversion to WideString was plain wrong, and conversion to AnsiString was ignoring the time portion. Patch from Luiz Americo, resolves #19075. git-svn-id: trunk@17259 - --- rtl/objpas/cvarutil.inc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rtl/objpas/cvarutil.inc b/rtl/objpas/cvarutil.inc index 513268a1a3..dbf16ebd89 100644 --- a/rtl/objpas/cvarutil.inc +++ b/rtl/objpas/cvarutil.inc @@ -1287,6 +1287,14 @@ begin end; {$ENDIF} end; +function VarDateToString(DT: TDateTime): AnsiString; +begin + if Trunc(DT) = 0 then + Result := TimeToStr(DT) + else + Result := DateTimeToStr(DT); +end; + {--- WideString ---} Function VariantToWideString(const VargSrc : TVarData) : WideString; @@ -1306,7 +1314,7 @@ begin varSingle : Result := FloatToStr(vSingle); varDouble : Result := FloatToStr(vDouble); varCurrency : Result := FloatToStr(vCurrency); - varDate : Result := FloatToStr(vDate); + varDate : Result := VarDateToString(vDate); {$endif} varBoolean : Result := BoolToStr(vBoolean, True); varVariant : Result := VariantToWideString(PVarData(vPointer)^); @@ -1329,7 +1337,7 @@ begin varSingle : Result := FloatToStr(PSingle(vPointer)^); varDouble : Result := FloatToStr(PDouble(vPointer)^); varCurrency : Result := FloatToStr(PCurrency(vPointer)^); - varDate : Result := FloatToStr(PDate(vPointer)^); + varDate : Result := VarDateToString(PDate(vPointer)^); {$endif} varBoolean : Result := BoolToStr(PWordBool(vPointer)^, True); varVariant : Result := VariantToWideString(PVarData(vPointer)^); @@ -1373,7 +1381,7 @@ begin varSingle : Result := FloatToStr(vSingle); varDouble : Result := FloatToStr(vDouble); varCurrency : Result := FloatToStr(vCurrency); - varDate : Result := DateToStr(vDate); + varDate : Result := VarDateToString(vDate); {$endif} varBoolean : Result := BoolToStr(vBoolean, True); varVariant : Result := VariantToAnsiString(PVarData(vPointer)^); @@ -1396,7 +1404,7 @@ begin varSingle : Result := FloatToStr(PSingle(vPointer)^); varDouble : Result := FloatToStr(PDouble(vPointer)^); varCurrency : Result := FloatToStr(PCurrency(vPointer)^); - varDate : Result := DateToStr(PDate(vPointer)^); + varDate : Result := VarDateToString(PDate(vPointer)^); {$endif} varBoolean : Result := BoolToStr(PWordBool(vPointer)^, True); varVariant : Result := VariantToAnsiString(PVarData(vPointer)^);