Die folgende Funktion GetUnicodeName ermittelt die Beschreibung eines Unicode-Zeichens.
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('Ä'); |
|