Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#19

AW: Floattostr wandelt Komma in #0

  Alt 15. Apr 2015, 18:34
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.
  Mit Zitat antworten Zitat