2
0
Эх сурвалжийг харах

* 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 -
sergei 14 жил өмнө
parent
commit
c17afffb65
1 өөрчлөгдсөн 12 нэмэгдсэн , 4 устгасан
  1. 12 4
      rtl/objpas/cvarutil.inc

+ 12 - 4
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)^);