Hmm...
Wieso macht ihr das nicht so wie MS es sogar in seinem Beispiel angibt:
Delphi-Quellcode:
type
TTransRec = packed record
Lang, // language code
CharSet: Word; // character set (code page)
end;
PTransRec = ^TTransRec; // pointer to TTransRec
procedure SprachID2Codepage;
var
InfoSize: DWORD;
InfoData: Array of Byte;
Translation: PTransRec;
TranslationLen: UINT;
begin
InfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), InfoSize);
if InfoSize > 0 then
begin
SetLength(InfoData, InfoSize);
if GetFileVersionInfo(PChar(ParamStr(0)), 0, InfoSize, @InfoData[0]) then
begin
if VerQueryValue(@InfoData[0], '\VarFileInfo\Translation', Pointer(Translation), TranslationLen) then
begin
ShowMessage(Format('Sprach-ID: %.4x, Codepage: %.4x', [Translation.Lang, Translation.CharSet]));
end;
end;
end;
end;
Das sollte doch für 32 und 64 Bit funktionieren ?
(Kann es gerade nicht mit 64bit testen)
Delphi-Quellcode:
for Idx := 0 to Pred(TranslationLen) do
begin
ShowMessage(Format('Sprach-ID: %.4x, Codepage: %.4x', [Translation.Lang, Translation.CharSet]));
Inc(Translation);
end;
Selbst ein Durchgehen durch alle Codes ist so sauber möglich...
Oder vertue ich mich hier?