diff --git a/packages/rtl-objpas/src/inc/cvarutil.inc b/packages/rtl-objpas/src/inc/cvarutil.inc index 4c89d26f06..5a9069fd9e 100644 --- a/packages/rtl-objpas/src/inc/cvarutil.inc +++ b/packages/rtl-objpas/src/inc/cvarutil.inc @@ -1283,7 +1283,7 @@ begin {$ifndef FPUNONE} varSingle : Result := FloatToStr(vSingle); varDouble : Result := FloatToStr(vDouble); - varCurrency : Result := FloatToStr(vCurrency); + varCurrency : Result := CurrToStr(vCurrency); varDate : Result := VarDateToString(vDate); {$endif} varBoolean : Result := BoolToStr(vBoolean, True); @@ -1306,7 +1306,7 @@ begin {$ifndef FPUNONE} varSingle : Result := FloatToStr(PSingle(vPointer)^); varDouble : Result := FloatToStr(PDouble(vPointer)^); - varCurrency : Result := FloatToStr(PCurrency(vPointer)^); + varCurrency : Result := CurrToStr(PCurrency(vPointer)^); varDate : Result := VarDateToString(PDate(vPointer)^); {$endif} varBoolean : Result := BoolToStr(PWordBool(vPointer)^, True); @@ -1350,7 +1350,7 @@ begin {$ifndef FPUNONE} varSingle : Result := FloatToStr(vSingle); varDouble : Result := FloatToStr(vDouble); - varCurrency : Result := FloatToStr(vCurrency); + varCurrency : Result := CurrToStr(vCurrency); varDate : Result := VarDateToString(vDate); {$endif} varBoolean : Result := BoolToStr(vBoolean, True); @@ -1373,7 +1373,7 @@ begin {$ifndef FPUNONE} varSingle : Result := FloatToStr(PSingle(vPointer)^); varDouble : Result := FloatToStr(PDouble(vPointer)^); - varCurrency : Result := FloatToStr(PCurrency(vPointer)^); + varCurrency : Result := CurrToStr(PCurrency(vPointer)^); varDate : Result := VarDateToString(PDate(vPointer)^); {$endif} varBoolean : Result := BoolToStr(PWordBool(vPointer)^, True); diff --git a/tests/webtbs/tw40624.pp b/tests/webtbs/tw40624.pp new file mode 100644 index 0000000000..681077d757 --- /dev/null +++ b/tests/webtbs/tw40624.pp @@ -0,0 +1,22 @@ +program tw40624; + +uses + SysUtils + { you can add units after this }; + +var + C: Currency; + V: Variant; + S: string; +begin + C := 822337203685477.5807; + V := C; + DefaultFormatSettings.DecimalSeparator := '.'; + + if CurrToStr(C) <> '822337203685477.5807' then + Halt(1); + S := V; + if S <> '822337203685477.5807' then + Halt(2); + WriteLn('OK'); +end.