Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Darstellungsproblem bei Dezimalzahlen


feivel3333 - Mi 30.03.11 20:28
Titel: Darstellungsproblem bei Dezimalzahlen
Hallo,

unter Windows XP hatte ich ein Programm geschrieben, das sehr viel mit Extended-Zahlen rechnet. Diese Zahlen wurden mit FloatToStr() richtig dargestellt, also z.B. in der Form "1.234,56"
Auch nach einem Umstieg auf Windows 7 32 bit funktionierte alles richtig. Das identische Programm aber auf Windows 7 64 bit gestartet stellt die Zahlen, obwohl in der Systemsteuerung alles korrekt eingestellt ist, in der amerikanischen Form dar, also "1,234.56"
Wie kann ich mittels Delphi die Darstellung der Dezimalzahlen wieder für die Funktion FloatToStr auf das deutsche Format umstellen?


Yogu - Mi 30.03.11 20:35

Hallo,

die Funktion FloatToStr akzeptiert noch einen zweiten Parameter vom Typ TFormatSettings.

Hier ein Beispiel, wie du die vom Benutzer eingestellten Werte abrufst:
Delphi-Referenz auf About.com [http://delphi.about.com/library/rtl/blrtlTFormatSettings.htm]:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var 
  s: string;
  fs : TFormatSettings; 

GetLocaleFormatSettings(0, fs);
fs.DecimalSeparator := 'D';
fs.ThousandSeparator := 'T';

s := FloatToStr(100 000 * PI, fs);

//s == '3T141T592D65'

Den Teil, in dem das TFormatSettings-Objekt angepasst wird, kannst du ja weglassen.

Es kann aber natürlich auch sein, dass die FloatToStr-Methode intern genau so etwas macht, wenn der zweite Parameter weggelassen wird. Dann hilft dieser Code wohl auch nichts mehr.

Grüße,
Yogu

Moderiert von user profile iconNarses: Delphi-Tag repariert.


Narses - Mi 30.03.11 20:44

Moin!

user profile iconfeivel3333 hat folgendes geschrieben Zum zitierten Posting springen:
Das identische Programm aber auf Windows 7 64 bit gestartet stellt die Zahlen, obwohl in der Systemsteuerung alles korrekt eingestellt ist, in der amerikanischen Form dar,
Das hört sich doch glatt so an, als ob das auch auf diesen Bug in Windows [http://www.delphi-forum.de/viewtopic.php?t=104818] zurückzuführen wäre. :idea: ;)

cu
Narses


feivel3333 - Do 31.03.11 22:32

Narses, du bist Klasse!
Wir haben es ausprobiert, und siehe da: Das Problem ist jetzt aus der Welt! Tausend Dank, nein, noch mehr.
Ohne diese Info würde ich vermutlich noch immer suchen und suchen und suchen...

Gruß, Schabi