Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delphi decimal separator issue

My application works on system with regional settings where decimal separator is comma. (Delphi 10.1)

I have set dot as decimal separator for my application .

  Application.UpdateFormatSettings := false;
  FormatSettings.DecimalSeparator := '.';
  Application.UpdateFormatSettings := true;

This works fine for me.

I have used format('%6.3f', 125.365]) function. Exe is on for 24*7 on the system..

In the initial phase like 1 or 2 hours format function returns data properly with dot as decimal separator but later on it changes to local settings comma

say 12,365.

How does dot changes to comma suddenly?

like image 441
poonam Avatar asked May 06 '26 19:05

poonam


1 Answers

Do not rely on the global FormatSettings. Use the second overload of Format, which allows you to specify your own TFormatSettings.

If you have a newer version of Delphi, you can directly use TFormatSettings.Invariant:

S := Format('%6.3f', [125.365], TFormatSettings.Invariant)

Or you create a new TFormatSettings:

S := Format('%6.3f', [125.365], TFormatSettings.Create('en-US'));

Or, e.g. in a version that does not have the Invariant or Create methods, you can set the values "by hand", of course. But set them in your own FormatSettings, not in the global one.

like image 162
Rudy Velthuis Avatar answered May 10 '26 03:05

Rudy Velthuis