AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eingestelltes Dezimaltrennzeichen ermitteln

Ein Thema von Magnitudo · begonnen am 18. Mai 2016 · letzter Beitrag vom 19. Mai 2016
Antwort Antwort
Magnitudo

Registriert seit: 26. Jan 2015
Ort: 86343 Königsbrunn
11 Beiträge
 
Delphi XE7 Starter
 
#1

Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 18. Mai 2016, 09:35
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
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 18. Mai 2016, 09:38
Moin...

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

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#3

AW: Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 18. Mai 2016, 14:15
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
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#4

AW: Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 18. Mai 2016, 20:17
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;
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 18. Mai 2016, 23:56
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".

Geändert von Delphi-Laie (18. Mai 2016 um 23:58 Uhr)
  Mit Zitat antworten Zitat
Magnitudo

Registriert seit: 26. Jan 2015
Ort: 86343 Königsbrunn
11 Beiträge
 
Delphi XE7 Starter
 
#6

AW: Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 19. Mai 2016, 00:28
Danke für die Tipps
Hab's so gemacht wie t.roller. Funktioniert perfekt.
Danke für den Beispielcode.

Grüße
Thomas
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Eingestelltes Dezimaltrennzeichen ermitteln

  Alt 19. Mai 2016, 04:29
Warum nicht einfach:
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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