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 Regions- und Spracheinstellungen ändern? (https://www.delphipraxis.net/112315-regions-und-spracheinstellungen-aendern.html)

messie 18. Apr 2008 15:28


Regions- und Spracheinstellungen ändern?
 
Moin,

ich lese Dateien ein, bei denen ein Datum als String drinsteht. Je nach Rechnereinstellungen sind die ja unterschiedlich. Kann ich zur Laufzeit die globalen Regionsoptionen umstellen, z.B. von Englisch(USA) auf Deutsch(Deutschland) etc.?

Danke, Messie

marabu 18. Apr 2008 16:11

Re: Regions- und Spracheinstellungen ändern?
 
Hallo,

die Systemeinstellungen würde ich nicht verändern. Delphi bietet dir die Möglichkeit solche Einstellungen im Programm vorzuhalten und ganz individuell einzusetzen.

Delphi-Quellcode:
var
  fs: TFormatSettings;
begin
  GetLocaleFormatSettings($0409, fs); // english settings
  ShowMessage(DateToStr(StrToDate('12/24/2007', fs)));
end;
Getippt und nicht getestet.

Grüße vom marabu

Daniel Schuhmann 18. Apr 2008 17:58

Re: Regions- und Spracheinstellungen ändern?
 
Zitat:

Zitat von marabu
die Systemeinstellungen würde ich nicht verändern.

Seh ich genauso. Aber zufällig brauche auch ich genau diese Funktion für ein anderes Programm (BVE, Japanischer Zugsimulator), das sich anders nicht zum Betrieb bewegen lässt.

Wenn Du also weißt wie es geht: Mich würd's auch interessieren.

Gruß,
Daniel

marabu 18. Apr 2008 18:28

Re: Regions- und Spracheinstellungen ändern?
 
Hallo Daniel,

Windows bietet meines Wissens keine dokumentierte API Funktion zum Ändern der Default System Locale Settings per LCID in einem Rutsch, ohne dass ein Neustart nötig wird. Du kannst bestenfalls alle Einstellungen einzeln (SetLocaleInfo) ändern. Ich habe allerdings schon gelegentlich bewiesen, dass ich mich irren kann.

Vielleicht hilft dir bei deinem speziellen Problem das AppLocale Utility von Microsoft?

Freundliche Grüße

nicodex 18. Apr 2008 18:29

Re: Regions- und Spracheinstellungen ändern?
 
Zitat:

Zitat von Daniel Schuhmann
Aber zufällig brauche auch ich genau diese Funktion für ein anderes Programm (BVE, Japanischer Zugsimulator), das sich anders nicht zum Betrieb bewegen lässt.

Für solche Problemfälle gibt es AppLocale.

Das Setup ist etwas älter und funktioniert mit aktiviertem UAC nicht richtig. In diesem Fall eine Admin-Konsole öffnen und die MSI von dort aus ausführen.

messie 21. Apr 2008 09:29

Re: Regions- und Spracheinstellungen ändern?
 
Zitat:

Zitat von marabu
Delphi-Quellcode:
var
  fs: TFormatSettings;
begin
  GetLocaleFormatSettings($0409, fs); // english settings
  ShowMessage(DateToStr(StrToDate('12/24/2007', fs)));
end;

Im Prinzip wäre das schon genau richtig, dann brauche ich ja nur noch die aktuelle Codepage zu holen.
Aber: Warum gibt es die Routine GetLocaleFormatSettings bei mir nicht? Delphi zu alt?

Grüße, Messie

marabu 21. Apr 2008 11:58

Re: Regions- und Spracheinstellungen ändern?
 
Hallo,

Zitat:

Zitat von messie
... Delphi zu alt? ...

ich befürchte: Ja.

Du hast doch Zugang zum Quelltext der Unit SysUtils. Vielleicht kannst du dir etwas ähnliches aus GetFormatSettings() schnitzen. Du hast dann zwar immer noch nicht die thread-sicheren Überladungen der Konvertierungsfunktionen (DateToStr, ...), aber könntest nach Belieben die gewünschten Ländereinstellungen wechseln.

Freundliche Grüße


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