AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ländereinstellung ermitteln

Ein Thema von guitarre · begonnen am 21. Mai 2007 · letzter Beitrag vom 21. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2   
guitarre

Registriert seit: 21. Aug 2006
16 Beiträge
 
Delphi 2005 Personal
 
#1

Ländereinstellung ermitteln

  Alt 21. Mai 2007, 12:03
Hallo zusammen,

kann mir jemand von Euch vielleicht sagen, wie ich die Ländereinstellung des Betriebssystems ermitteln kann,(de,eng etc...)

Danke schon einmal im Voraus

Gruß guitarre
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 12:24
Herzlich willkommen in der Delphi-PRAXiS, guitarre.

Dich dürften die WIN32 API Funktionen GetSystemDefaultLCID() bzw. GetUserDefaultLCID() interessieren. Diese Funktionen liefern dir die definierten Konstanten. Wenn du diese Konstanten noch in einen String übersetzen möchtest, dann ist weiterer Aufwand zu treiben.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
guitarre

Registriert seit: 21. Aug 2006
16 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 12:30
hallo marabu,

Danke ,das gefällt mir schon mal sehr gut !
Gibt es auch eine Funktion, die anstatt einen IntWert einen String liefert ??

Danke schon einmal für den ersten Tipp !!

Gruß guitarre
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 12:35
Schau dir dazu bitte mal die Funktion Languages in der Unit SysUtils an.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 12:37
Meinst du so was:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Procedure : GetOSLanguageID
// Comment : Returns the language of the OS
function GetOSLanguageStr: string;
begin
  SetLength(Result, MAX_PATH);
  SetLength(Result, VerLanguageName(GetSystemDefaultLangId,
    @Result[1], length(Result)));
end;

////////////////////////////////////////////////////////////////////////////////
// Procedure : GetOSLanguageStr
// Comment : Returns the language ID-String
function GetOSLanguageIDStr: string;
var
  Buffer : array[0..MAX_PATH] of char;
  len : Integer;
begin
  ZeroMemory(@Buffer, sizeof(Buffer));
  len := GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, Buffer,
    sizeof(Buffer));
  SetString(result, Buffer, len);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
guitarre

Registriert seit: 21. Aug 2006
16 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 12:47
@marabu,
@michael,

DANKE, genau das meinte ich !

Gruß guitarre
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 14:19
Hallo,

wurde die Unit SysUtils eingebunden, dann hat die Delphi-Anwendung diese Informationen bereits ermittelt. Man muss sie dann nur noch auslesen:

Delphi-Quellcode:
function GetSysLanguageName: string;
begin
  with Languages do
    Result := NameFromLocaleID[SysLocale.DefaultLCID];
end;

function GetSysLanguageExt: string;
begin
  with Languages do
    Result := Ext[IndexOf(SysLocale.DefaultLCID)];
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
guitarre

Registriert seit: 21. Aug 2006
16 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 14:38
Danke @marabu,@michael,

funktioniert alles einwandfrei.
Allerdings habe ich noch ein Problem, gibt es eine Möglichkeit die aktuelle
Ländereinstellung anzeigen zu lassen,
(z.B.: bei der Umstellung von DEU auf ENG),also nicht die Länderkennung, die defaultmäßig installiert wurde ?
Ich habe schon nach GetUserCurrentLCID gegoogelt, allerdings ohne Erfolg!
Kennt jemand eine Lösung um die aktuell eingestellte Länderkennung auszulesen???

Danke und Gruß
guitarre
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 17:43
Hallo,

eigentlich sollte die über die Systemsteuerung geänderte Wahl des Gebietsschemas über die API-Funktion GetThreadLocale() reflektiert werden - wird sie aber nicht:

Delphi-Quellcode:
function GetLanguageName(lcid: LCID): string;
begin
  with Languages do
    Result := NameFromLocaleID[lcid];
end;

// ShowMessage(GetLanguageName(GetThreadLocale));
Vielleicht mache ich aber auch einen Fehler.

Auf ein besonderes Problem weist Microsoft noch hin: How To Get the Current User Locale ID ... Without Restarting

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Corelgott
Corelgott

Registriert seit: 11. Apr 2003
Ort: Lübeck
213 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Ländereinstellung ermitteln

  Alt 21. Mai 2007, 18:04
vll noch als tipp.... um an ein infos einigermaßen bequem zu kommen...

Delphi-Quellcode:
type TFoobat = class(TWinControl)

     localFormatSettings : TFormatSettings;

[...]

GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, localFormatSettings);
das ist recht praktisch, wenn es um währungen, dezimal etc geht...

und dazu vll auch noch:
wenn sich etwas wärend der laufzeit ändert wird diese message gefeuert....

Delphi-Quellcode:
procedure WinSettingsChange(var Message: TMessage); message WM_WININICHANGE;

[...]

procedure TSettingsWatchDog.WinSettingsChange(var Message: TMessage);
begin
  if message.msg = WM_WININICHANGE then
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, localFormatSettings);

  inherited;
end;
cya
Corelgott
wer Rächtschraibfehler findet daaf sie behalten...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01: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