![]() |
Eingestelltes Dezimaltrennzeichen ermitteln
Hallo zusammen,
kann man irgendwie das vom User in Windows eingestellte Dezimaltrennzeichen abfragen? In Englischsprachigen Ländern ist meistens ein Punkt voreingestellt. Bei uns ist es ein Komma. Ich müsste das ermitteln können, damit ich in meinem Code vor dem Umwandeln eines Strings in ein Float richtig reagieren kann, da die Funktion StrToFloat sonst immer einen Fehler ausgibt. Grüße Thomas |
AW: Eingestelltes Dezimaltrennzeichen ermitteln
Moin...
Schau dir mal ![]() Bezüglich der Datums und Zeiteinstellungen hat Format Settings aber einen Bug... :roll: ![]() |
AW: Eingestelltes Dezimaltrennzeichen ermitteln
Ich würde im String die Komma/Punkte immer in das jeweilige Formatkennzeichnen konvertieten,
damit die Routine gar nicht erst eine Exception rauswerfen muss. Wenn die Software in exotische Länder wie Japan oder Timbuktu soll, dann habe ich schon oft Probleme damit gehabt, auch wenn das der Kunde eingeben kann. Meine Routen machen eine solche Vorab-Korrektur, auch wenns etwas mehr Zeit kostet. Rollo |
AW: Eingestelltes Dezimaltrennzeichen ermitteln
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var MyDecimal: PChar; begin MyDecimal:=StrAlloc(10); GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL,MyDecimal,10); Caption:='System decimal is: '+ MyDecimal; end; |
AW: Eingestelltes Dezimaltrennzeichen ermitteln
Zitat:
|
AW: Eingestelltes Dezimaltrennzeichen ermitteln
Danke für die Tipps :-D
Hab's so gemacht wie t.roller. Funktioniert perfekt. Danke für den Beispielcode. Grüße Thomas |
AW: Eingestelltes Dezimaltrennzeichen ermitteln
Warum nicht einfach:
Delphi-Quellcode:
Das Dezimaltrennzeichen einfach automatisch konvertieren ist allerdings ein Problem wenn auch das Tausendertrennzeichen benutzt wird. Denn das ist in der Regel genau das genau das andere Zeichen.
Caption := FormatSettings.DecimalSeparator;
Deshalb sollte man bei der Speicherung eines Wertes als String immer explizit zum Beispiel den Punkt benutzen und nur für die Anzeige das automatische Trennzeichen benutzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz