Normally I would agree.
But
1.
I just tried to modify the ICS code under Delphi 7 and got this error:
[Error] OverbyteIcsSuperObject.pas(205): Order of fields in record constant differs from declaration
2.
important settings getting lost, like: CurrencyString !
So IMHO this approach (loading the defaults ) is better:
GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, icsFormatSetting);
because it will use a local-default, (by reading every necessary sting for the format-record),
but the user may override it during usage:
icsFormatSentting.DecimalSeparator:= '.';
Although there is a big problem about multithreading, so using a simple "global var" isn't a good solution either.
All SuperObjects should have a global thread-safe variable of this.
As for a quick solution it would be also enough to insert some new functions, like: PutD_iso , PutDT_iso, etc
procedure TSuperObject.PutD_iso(const path: SOString; Value: Double);