Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Eingestelltes Dezimaltrennzeichen ermitteln (https://www.delphipraxis.net/189209-eingestelltes-dezimaltrennzeichen-ermitteln.html)

Magnitudo 18. Mai 2016 08:35

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

haentschman 18. Mai 2016 08:38

AW: Eingestelltes Dezimaltrennzeichen ermitteln
 
Moin...

Schau dir mal http://www.delphipraxis.net/dp_refer...Formatsettings an.
Bezüglich der Datums und Zeiteinstellungen hat Format Settings aber einen Bug... :roll: http://www.delphipraxis.net/188843-f...s-dummies.html

Rollo62 18. Mai 2016 13:15

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

t.roller 18. Mai 2016 19:17

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;

Delphi-Laie 18. Mai 2016 22:56

AW: Eingestelltes Dezimaltrennzeichen ermitteln
 
Zitat:

Zitat von Rollo62 (Beitrag 1338361)
Wenn die Software in exotische Länder wie Japan oder Timbuktu soll,

Timbuktu ist "nur" eine Stadt (in der Sahelzone) und erinnert mich immer an das Ende eines Freudendamenwitzes: "I booked one, but Tim booked two".

Magnitudo 18. Mai 2016 23:28

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

jaenicke 19. Mai 2016 03:29

AW: Eingestelltes Dezimaltrennzeichen ermitteln
 
Warum nicht einfach:
Delphi-Quellcode:
Caption := FormatSettings.DecimalSeparator;
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.

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 23:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz