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.