Wenn ich das Beispiel von popov nutze, manipuliere ich dann die Standardeinstellungen des Systems?
Weder die des Systems, noch die des Programms. Nur die eines Records.
Zuerst, nicht alles was ein T am Anfang hat ist eine Klasse. TFormatSettings ist hier ein Record:
Delphi-Quellcode:
type
TFormatSettings = record
CurrencyFormat: Byte;
NegCurrFormat: Byte;
ThousandSeparator: Char;
DecimalSeparator: Char;
CurrencyDecimals: Byte;
DateSeparator: Char;
TimeSeparator: Char;
ListSeparator: Char;
CurrencyString: string;
ShortDateFormat: string;
LongDateFormat: string;
TimeAMString: string;
TimePMString: string;
ShortTimeFormat: string;
LongTimeFormat: string;
ShortMonthNames: array[1..12] of string;
LongMonthNames: array[1..12] of string;
ShortDayNames: array[1..7] of string;
LongDayNames: array[1..7] of string;
TwoDigitYearCenturyWindow: Word;
end;
Eigentlich ist das Beispiel was ich am Anfang geschrieben habe nicht ganz korrekt, denn bei
Delphi-Quellcode:
var
d: Double;
fs: TFormatSettings;
s: string;
begin
d := 4.5887305339;
fs.DecimalSeparator := ',';
s := FloatToStr(d, fs);
steht in fs nur Müll. Auf jeden Fall nicht die in Deutschland gültigen Ländereinstellungen. Sollte man nicht machen, man sollte zuerst GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, fs); aufrufen. Das ist aber in dem Fall nicht so wichtig, denn mit der Zeile
fs.DecimalSeparator := ',';
habe ich den für mich wichtigen Wert angepasst. Und wenn ich es nun mitschicke, weiß FloatToStr, dass ich ein Komma als Dezimalseparator ansehe. Danach kann ich den fs Record vergessen. Es gab keine Änderungen irgendwo, nur in fs.
Zitat:
Muss ich mir mit TFormatSettings.Create eine eigene erstellen
Nein, sofort nutzen.