Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 

Re: Infos aus der Locale ID (LCID aka Gebietsschema)

  Alt 7. Jul 2003, 18:04
Dann hänge ich die Makros gleich mal hier an, weil´s so schön passt. C-Programmierer haben, dank Microsoft, ein paar schöne Funktionen zum "Dekodieren" von Language-IDs usw. Die hat Borland leider vergessen - zumindest bei Delphi 5 und wahrscheinlich davor. Hier sind sie:
Delphi-Quellcode:
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;
Ein Anwendungsbeispiel:
Delphi-Quellcode:
var
  txt : string;
  langid : word;
begin
  langid := MAKELANGID(LANG_SPANISH,
    SUBLANG_SPANISH_DOMINICAN_REPUBLIC);

  SetLength (txt,MAX_PATH);
  SetLength (txt,
    VerLanguageName(langid,@txt[1],length(txt)));
  ShowMessage(txt);
end;
usw. Im PSDK kann man die Sache genauer nachlesen.
  Mit Zitat antworten Zitat