Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.558 Beiträge
 
Delphi 12 Athens
 
#5

AW: Sprach ID aus Exe auslesen

  Alt 17. Jul 2025, 16:29
Und knallt hoffentlich wunderschön, mit 64 Bit.

Wer nach 14 20 Jahren des 64-Bit-Delphi 64-Bit-Windows immernoch Pointer zu Integer castet, dem gehört ordentlich der Popo versohlt.

Delphi-Quellcode:
procedure SprachID2Codepage;
var
  InfoSize: DWORD;
  InfoData: TBytes;
  Translation: Pointer;
  TranslationLen: UINT;
  LangID, CodePage: Word;
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', Translation, TranslationLen) then
      begin
        LangID := PWord(Translation)^;
        CodePage := PWord(IntPtr(Translation) + 2)^; // oder PByte statt IntPtr/Pointer und schön die Pointer-Arithmetik nutzen :D
        ShowMessage(Format('Sprach-ID: %.4x, Codepage: %.4x', [LangID, CodePage]));
      end;
    end;
  end;
end;
Automatische Speicherverwaltung und Casten in gleich den "richtigen" Typen ... hach, das Leben könnte so einfach sein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Jul 2025 um 16:31 Uhr)
  Mit Zitat antworten Zitat