Autor Beitrag
Tpercon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Do 19.06.03 15:08 
Wie ermittel ich das auf dem System eingestellte Gebietsschema?

Gruß
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 24.06.03 00:44 
per
ausblenden Quelltext
1:
LANGID GetSystemDefaultLangID(void);					


Sollte in der Windows.pas deklariert sein.[/code]
Tpercon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Mo 07.07.03 10:07 
Wie bekomme ich an Hand des Identifier die Sprache?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.07.03 11:44 
Kuck doch mal im MSDN (www.msdn.microsoft.com) nach GetSystemDefaultLangID, da sollte alles weitere stehen.
Tpercon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



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



BeitragVerfasst: Mo 07.07.03 14:35 
Die LangID besteht aus der Sprache an sich und der Sortier-ID ... was genau willst du haben?
Tpercon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



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



BeitragVerfasst: Mo 07.07.03 14:56 
Konfuzius sagt ... nimm das PSDK:

Statt suchen zu lassen :mrgreen:
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 07.07.03 15:14 
Vielleicht hilft dir ja diese FAQ weiter: ... die User- & Systemsprache ermitteln?

Gruß
Tino
Tpercon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



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



BeitragVerfasst: 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 $F0000shr 16);


Jetzt alles fit?
Tpercon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Mo 07.07.03 15:43 
Und diese Decodierung bekomm ich halt nicht hin. :oops:
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Mo 07.07.03 15:59 
Ich bekomme es nicht hin, die LangID als lesbaren String auszugeben.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.07.03 16:47 
Tpercon hat folgendes geschrieben:
Und diese Decodierung bekomm ich halt nicht hin. :oops:

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:
ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
function MAKELANGID(usPrimaryLanguage, usSubLanguage: BYTE): WORD;
begin
  Result := (usSubLanguage shl 10or 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 16or 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 16and $F);
end;

function SORTVERSIONFROMLCID(lcid: DWORD): WORD;
begin
  Result := WORD((lcid shr 20and $F);
end;

Damit geht die "Dekodierung" natürlich sehr einfach, wenn man nicht zufällig einen Assarbad in der Nähe hat, der aushilft. :mrgreen:


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. :wink: Wobei ich sagen muss, wenn ich folgendes mache:
ausblenden 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 ... :roll: ... aber der FAQ-Code ist nach meiner bescheidenen Meinung in Ordnung.
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.07.03 17:00 
Titel: Mit Erdbeergeschmack? ... hiero
@Mathias: Schmeiss deinen Code mal in die Code-Library der DP :)

ausblenden 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;

{
int GetLocaleInfo(
  LCID Locale,      // locale identifier
  LCTYPE LCType,    // information type
  LPTSTR lpLCData,  // information buffer
  int cchData       // size of buffer
);
}

var
  bla:array[0..1023of 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



BeitragVerfasst: 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:
ausblenden 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. :oops:

Assarbad hat folgendes geschrieben:
@Mathias: Schmeiss deinen Code mal in die Code-Library der DP :)

Ok, wieso nicht.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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



BeitragVerfasst: 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 :mrgreen:

Ich werd's wahrscheinlich nachtragen ...
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 ...