Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Windows7 RegionalSettings (https://www.delphipraxis.net/156447-delphi-windows7-regionalsettings.html)

peschai 2. Dez 2010 10:11

Delphi Windows7 RegionalSettings
 
Für interessiert Leute...

Die Initialisierung von Delphiprogrammen mit RegionalSettings erfolgt unter Windows7 ...

SysUtils: GetFormatSetting mit z.b. GetLocaleChar mit GetThreadLocale
Einige Programme könnten mit englischen RegionalenEinstellungen arbeiten, obwohl via Systemsteuerung alles OK (z.b auf Deustch gestellt) ist.
Datumsformate oder Gleitkommazahlen könnten damit evt. falsch interpretiert werden...was zu geringen aber auch gravierende Auswirkungen führen könnte.
(Interessanterweise tritt das Problem z.b. in Excel2010 nicht auf.)

Das Problem ist ein falscher Registryeintrag. Vermutlich tritt dies bei einer Windows 7 Multi-Language Version auf, die dann bei der Installation auf Deutsch gesetzt wurde. Bei einer rein deutschen Version tritt dieses Problem wahrscheinlich nicht auf. Nach Änderung der Registry sollte der Rechner durchge´startet werden (evt. reicht User neu anzumelden).

Natürlich hier auch der Hinweis, daß unsachgemäße Änderung an der Registry den Computer lahmlegen könnten, also vorher ein Backup machen :-D ...)

Bei deutscher Sprache "de-DE" darf die WindowsAPI Funktion "GetThreadLocale" nicht 0x0409 zurückgeben sondern muss 0x0407 zurückgeben. 0x0409 bedeuted "en_US" und es zeigt sich dass dies nicht zu den anderen Einstellungen inder Registry passt.[HKEY_CURRENT_USER\Control Panel\International]
Falsch:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\International]
"Locale"="00000409"
"LocaleName"="de-DE"
Richtig:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\International]
"Locale"="00000407"
"LocaleName"="de-DE"
..Oder beri anderen Sprachen sollte das paarweise zusammenpassen, hier gezeigt am Beispiel "en-US"
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\International]
"Locale"="00000409"
"LocaleName"="en-US"

himitsu 2. Dez 2010 10:18

AW: Delphi Windows7 RegionalSettings
 
Dieses Problemchen ist schon eine Weile bekannt.

Statt die Registry zu ändern, würde ich eher eine der bisher erfolgreich praktizierten Methoden empfehlen.

> in der Systemsteuerung die Sprache auf englisch und dann zurück auf deutsch umstellen.
(statt englisch kann auch jede andere Sprache, außer deutsch verwendet werden)

Hierbei werden dann von Windows diese Registry-Werte angepaßt und es sollte dabei nicht so schnell was kaputt gehn.
Und es ist auch kein neustart nötig, da Windows über entsprechende Änderungsmessages alle Anwendungen informiert. (Delphiprogramme reagieren darauf und laden die Spracheinstellungen dann neu in ihre Variablen)


PS: Ich würde einfach mal behaupten, daß dieses Problem darauf zurückgeht, daß irgendein OEM-Vertreiber seine Windowsversion ebenfalls über eine fehlerhafte direkte Veränderung der Registry lokalisiert hat und dabei dann dieses Problem entstand. :stupid:


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