Code: Select all
;-TOP
; *****************************************************************************
Procedure.s LocaleStrF(fltVal.f)
Protected result.s
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
Protected value.variant
value\vt = #VT_R4
value\fltVal = fltVal
If VariantChangeType_(value, value, 0, #VT_BSTR) = #S_OK
result = PeekS(value\bstrVal, - 1, #PB_Unicode)
VariantClear_(value)
EndIf
CompilerCase #PB_OS_MacOS
;TODO
CompilerCase #PB_OS_Linux
;TODO
CompilerEndSelect
ProcedureReturn result
EndProcedure
; -----------------------------------------------------------------------------
Procedure.s LocaleStrD(dblVal.d)
Protected result.s
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
Protected value.variant
value\vt = #VT_R8
value\dblVal = dblVal
If VariantChangeType_(value, value, 0, #VT_BSTR) = #S_OK
result = PeekS(value\bstrVal, - 1, #PB_Unicode)
VariantClear_(value)
EndIf
CompilerCase #PB_OS_MacOS
;TODO
CompilerCase #PB_OS_Linux
;TODO
CompilerEndSelect
ProcedureReturn result
EndProcedure
; *****************************************************************************
;- Test
CompilerIf #PB_Compiler_IsMainFile
Define fVal.f, dVal.d
Debug "Locale format of Float"
fVal = 1234.567
Debug LocaleStrF(fVal)
PokeL(@fVal, $FFFFFFFF)
Debug LocaleStrF(fVal)
Debug "Locale format of Double"
dVal = 123456.56789
Debug LocaleStrD(dVal)
PokeQ(@dVal, $FFFFFFFFFFFFFFFF)
Debug LocaleStrD(dVal)
CompilerEndIf