| Autor |
Beitrag |
Tpercon
      
Beiträge: 60
|
Verfasst: Do 19.06.03 15:08
Wie ermittel ich das auf dem System eingestellte Gebietsschema?
Gruß
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Di 24.06.03 00:44
per
Quelltext 1:
| LANGID GetSystemDefaultLangID(void); |
Sollte in der Windows.pas deklariert sein.[/code]
|
|
Tpercon 
      
Beiträge: 60
|
Verfasst: Mo 07.07.03 10:07
Wie bekomme ich an Hand des Identifier die Sprache?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 11:44
Kuck doch mal im MSDN ( www.msdn.microsoft.com) nach GetSystemDefaultLangID, da sollte alles weitere stehen.
|
|
Tpercon 
      
Beiträge: 60
|
Verfasst: Mo 07.07.03 12:16
Daher habe ich die Infos ja, nur es muß doch eine Funktion geben, die die zugehörige Language des Identifier (siehe Language Identifiers and Locales) ausliest.
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 14:35
Die LangID besteht aus der Sprache an sich und der Sortier-ID ... was genau willst du haben?
|
|
Tpercon 
      
Beiträge: 60
|
Verfasst: Mo 07.07.03 14:43
Ich wüßte gerne wie ich z.B. von der 0x0407 auf Deutschland komme?!
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 14:56
Konfuzius sagt ... nimm das PSDK:
Statt suchen zu lassen 
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 07.07.03 15:14
Vielleicht hilft dir ja diese FAQ weiter: ... die User- & Systemsprache ermitteln?
Gruß
Tino
|
|
Tpercon 
      
Beiträge: 60
|
Verfasst: Mo 07.07.03 15:15
@ Assarbad: Gefunden habe ich das auch, nur kann ich das leider nicht für meine Frage umsetzen.
@ Tino: Das ist perfekt! Danke dir!
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 15:22
Sekunde mal. Ich erwartete hier mit einem Programmierer zu sprechen.
- Die LCID ist die Locale ID (i.e. Gebietsschema).
- Die LangID ist die Sprache als Zahl codiert.LangID:=Word(LCID);
- Die SortID ist ab dem 16. Byte zu haben (4bit = 1 Nibble breit)...SortID:=Byte((LCID AND $F0000) shr 16);
Jetzt alles fit?
|
|
Tpercon 
      
Beiträge: 60
|
Verfasst: Mo 07.07.03 15:43
Und diese Decodierung bekomm ich halt nicht hin. 
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 15:52
Wie, es klappt auch nicht mit obigem Source, oder du konntest das nicht aus der Doku ableiten? Weil wenn der Source nicht funzt, muss ich nochmal nachschauen.
|
|
Tpercon 
      
Beiträge: 60
|
Verfasst: Mo 07.07.03 15:59
Ich bekomme es nicht hin, die LangID als lesbaren String auszugeben.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 16:47
| Tpercon hat folgendes geschrieben: | Und diese Decodierung bekomm ich halt nicht hin.  |
Vielleicht ist das bei neuen Delphi-Versionen anders, aber bei Delphi 5 hat Borland ein paar der nützlichen Makros vergessen, mit denen man bei Microsoft verwöhnt wird. Ausgehend von den Makros aus der "WinNT.h" und den Beschreibungen im PSDK habe ich mir die Makros selbst geschrieben:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| function MAKELANGID(usPrimaryLanguage, usSubLanguage: BYTE): WORD; begin Result := (usSubLanguage shl 10) or usPrimaryLanguage; end;
function PRIMARYLANGID(lgid: WORD): Word; begin Result := lgid and $3ff; end;
function SUBLANGID(lgid: WORD): WORD; begin Result := lgid shr 10; end;
function MAKELCID(wLanguageId, wSortId: WORD): DWORD; begin Result := (wSortId shl 16) or wLanguageId; end;
function MAKESORTLCID(wLanguageId, wSortId, wSortVersion: WORD): DWORD; begin Result := MAKELCID(wLanguageId,wSortId) or (wSortVersion shl 20); end;
function LANGIDFROMLCID(lcid: DWORD): WORD; begin Result := WORD(lcid); end;
function SORTIDFROMLCID(lcid: DWORD): WORD; begin Result := WORD((lcid shr 16) and $F); end;
function SORTVERSIONFROMLCID(lcid: DWORD): WORD; begin Result := WORD((lcid shr 20) and $F); end; |
Damit geht die "Dekodierung" natürlich sehr einfach, wenn man nicht zufällig einen Assarbad in der Nähe hat, der aushilft.
Ansonsten fällt mir nur ein, mit Dankeshymnen à
| Zitat: | | @ Tino: Das ist perfekt! Danke dir! |
zu warten bis man den Code auch wirklich ausprobiert und Grund zum Danken hat.  Wobei ich sagen muss, wenn ich folgendes mache:
Delphi-Quelltext 1: 2: 3:
| SetLength (txt,MAX_PATH); SetLength (txt,VerLanguageName(GetUserDefaultLangId,@txt[1],sizeof(txt))); ShowMessage(Format('%s',[txt])); |
dann erhalte ich DEU als Ergebnis. Na gut, ich habe auch mehr erwartet ...  ... aber der FAQ-Code ist nach meiner bescheidenen Meinung in Ordnung.
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 17:00
Titel: Mit Erdbeergeschmack? ... hiero
@Mathias: Schmeiss deinen Code mal in die Code-Library der DP
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| program Project1; {$APPTYPE CONSOLE} uses Windows;
var bla:array[0..1023] of Char; begin GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SENGCOUNTRY, @bla, sizeof(bla)); Writeln('Name des Landes (Englisch) : ',bla); GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SENGLANGUAGE, @bla, sizeof(bla)); Writeln('Name der Sprache auf Englisch: ',bla); GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SLANGUAGE, @bla, sizeof(bla)); Writeln('Name der Sprache lokalisiert : ',bla); GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SNATIVELANGNAME, @bla, sizeof(bla)); Writeln('Orginalname der Sprache : ',bla); GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SNATIVECTRYNAME , @bla, sizeof(bla)); Writeln('Orginalname des Landes : ',bla); Readln; end. |
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 07.07.03 17:59
Titel: Re: Mit Erdbeergeschmack? ... hiero
| MathiasSimmack hat folgendes geschrieben: | | Na gut, ich habe auch mehr erwartet ... |
... aber dann hätte ich auch vielleicht length(txt) anstelle von sizeof(txt) benutzen müssen:
Delphi-Quelltext 1: 2: 3: 4:
| SetLength (txt,MAX_PATH); SetLength (txt, VerLanguageName(GetUserDefaultLangId,@txt[1],length(txt))); ShowMessage(txt); |
So sehe ich selbstverständlich "Deutsch (Standard)". Also - mein Fehler.
| Assarbad hat folgendes geschrieben: | @Mathias: Schmeiss deinen Code mal in die Code-Library der DP  |
Ok, wieso nicht.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Di 08.07.03 08:51
Titel: Re: Mit Erdbeergeschmack? ... hiero
| MathiasSimmack hat folgendes geschrieben: | | Assarbad hat folgendes geschrieben: | @Mathias: Schmeiss deinen Code mal in die Code-Library der DP  |
Ok, wieso nicht. |
Hier würden sich mehr als 3000 User auch über den Code in der FAQ freuen 
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Di 08.07.03 10:11
Hallo Tino,
ist ja fast wie im echten Leben. Jeder benutzt eine eigene Terminologie ... da braucht sich keiner wundern, daß keiner mehr was versteht
Ich werd's wahrscheinlich nachtragen ...
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 08.07.03 13:58
Ja, bitte - sei mal nachtragend und schreib gleich meine Funktionen mit dazu. Wie in der DP halt. Dann brauch ich das nicht machen ...
|
|