Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ländereinstellungen lesen und setzen (https://www.delphipraxis.net/161017-laendereinstellungen-lesen-und-setzen.html)

FriendOfDelphi 12. Jun 2011 22:23

Ländereinstellungen lesen und setzen
 
Hallo Allerseits!

Unter Windows (z.B. Win XP) kann man unter "Start\Systemsteurung\Regions- und Sprachoptionen\Regionale Einstellungen" die Formate für Zahlen, Währungen, Uhrzeit und Datum einstellen.
Dort steht dann hier in Deutschland meistens "Deutsch(Deutschland)".
Man kann dann dort z.B. "Englisch (Großbritannien)" einstellen.

Nun zu meiner Frage:
Ich möchte das mein Programm in der Einstellung "Englisch (Großbritannien)" läuft.
Das Programm soll zur Laufzeit prüfen, welche Ländereinstellung auf dem Rechner eingestellt ist und wenn z.B. "Deutsch(Deutschland)" eingestellt ist, diese nur für die Laufzeit des Programms nach "Englisch (Großbritannien)" umstellen.
Nach Beendigung des Programms soll wieder die alte Einstellung vorhanden sein.
Ich habe schon ein bisschen mit
Delphi-Quellcode:
SetLocaleInfo
experimentiert. Aber da finde ich nur etwas zu einzelnen Einstellung; z.B. den Dezimalseperator:
Delphi-Quellcode:
SetLocaleInfo(Locale, LOCALE_SDecimal, '.');
.
Gibt es auch eine Möglichkeit die obige "manuelle" Einstellung von Hand in Delphi zu machen?

Luckie 12. Jun 2011 22:33

AW: Ländereinstellungen lesen und setzen
 
Ich glaube die versuchst das Symptom zu beheben, anstatt die Ursache. Es gibt in Delphi die globale Variable DecimalSeparator, die festlegt was als Dezimaltrennzeichen verwendet wird. Denn wenn du die Ländereinstellungen veränderst gilt das auch für andere Programme. Das heißt, die anderen Programme könnten dann eventuell nicht mehr funktionieren oder falsche Ergebnisse und Darstellungen liefern.

FriendOfDelphi 14. Jun 2011 08:31

AW: Ländereinstellungen lesen und setzen
 
Zitat:

Zitat von Luckie (Beitrag 1106013)
Ich glaube die versuchst das Symptom zu beheben, anstatt die Ursache. Es gibt in Delphi die globale Variable DecimalSeparator, die festlegt was als Dezimaltrennzeichen verwendet wird. Denn wenn du die Ländereinstellungen veränderst gilt das auch für andere Programme. Das heißt, die anderen Programme könnten dann eventuell nicht mehr funktionieren oder falsche Ergebnisse und Darstellungen liefern.

Stimmt. Da stimme ich Dir zu.
Aber wie ist hier die "richtige" Vorgehensweise?
Soll das Programm den vom Benutzer/Betriebssystem verwendeten Dezimalseparator einfach ignorieren und ein innerhalb des Programms vereinbarten Dezimalseparator verwenden?
Z.B. indem grundsätzlih innerhalb des Programms der Punkt (".") oder das Komma (",") als Dezimalseparator verwendet wird.
Das könnte man ja erreichen, indem man die vom Benutzer eingegebe(n) Float-Zahl(en) überprüft und ggf. den Dezimalseparator austauscht.

Luckie 14. Jun 2011 08:51

AW: Ländereinstellungen lesen und setzen
 
Zum Anzeigen natürlich die vom Benutzer gewählten Systemeinstellungen. Was du intern in deinem Programm nutzt ist egal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:25 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