Beschreibung eines Unicode-Zeichens ermitteln

Die folgende Funktion GetUnicodeName ermittelt die Beschreibung eines Unicode-Zeichens.

  • Der Parameter code gibt das Unicode-Zeichen an.

  • Das Funktionsergebnis ist die Beschreibung in der jeweiligen Systemsprache.

Dazu benutzt sie die undokumentierte Funktion GetUName aus der Bibliothek getuname.dll, die erst ab Windows 2000 und aufwärts zur Verfügung steht.

Wenn die Funktion nicht verfügbar ist, so erkennt man es daran, dass eine leere Zeichenkette als Ergebnis zurückliefert wird. Normalerweise erhält man nämlich immer eine Beschreibung, und sei es der Text "Nicht definiert".

uses
  Windows;

type
  TGetUName = procedure(code: WideChar; buffer: PWideChar); stdcall;

var
  GetUName_DLL: THandle;
  GetUName_Proc: TGetUName;

procedure GetUName_Dummy(code: WideChar; buffer: PWideChar); stdcall;
begin
  buffer^ := #0;
end;

function GetUnicodeName(code: WideChar): string;
var
  buffer: array [0 .. 255] of WideChar;
begin
  if not Assigned(GetUName_Proc) then
  begin
    GetUName_DLL := LoadLibrary('getuname.dll');
    if GetUName_DLL <> 0 then
      GetUName_Proc := GetProcAddress(GetUName_DLL, 'GetUName');
    if not Assigned(GetUName_Proc) then
      GetUName_Proc := GetUName_Dummy;
  end;

  buffer[0] := #0;
  if Assigned(GetUName_Proc) then
    GetUName_Proc(code, buffer);
  Result := buffer;
end;

Beispiel

Auf einem deutschsprachigen System liefert der folgende Aufruf das Ergebnis "Großer lateinischer Buchstabe A mit Diärese".

Name := GetUnicodeName('Ä');
Flocke's Garage
Valid HTML 4.01 Transitional Valid CSS!
(C) 2005-2018 Volker Siebert.
Creative Commons-LizenzvertragDer gesamte Inhalt dieser Webseite steht unter einer Creative Commons-Lizenz (sofern nicht anders angegeben).