Einzelnen Beitrag anzeigen

Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#1

Was enthält bin_data genauer? (Benutzt von InternalGetUnicodeCategory)

  Alt 12. Feb 2019, 17:29
Hallo,

In der Unit System.Character gibt es eine Funktion InternalGetUnicodeCategory(). Diese verwendet eine komplexe Indizierung und die Kategorie eines Codepoints zu bestimmen (ob es Control character ist, Letter, usw.).

Code:
Result := CategoryTable[CatIndexSecondary[CatIndexPrimary[C shr 8] + ((C shr 4) and $F)] + C and $F];
Die Indizierung ist wohl so aufgebaut um Speicher zu sparen, wahrscheinlich eine Art Trie. Allerdings bleibt es etwas nebulös wie das genau umgesetzt wurde. Sprich: Wie genau wurde die Liste der Codepoints, die ein array von 0..$10FFFF darstellt, auf diese Mehrfachindizierung reduziert? Kennt jemand die Hintergründe?

Die Array-Definitionen in System.Character_const.5.2.0.inc sind wohl etwas verständlicher. Sieht eher nach einer Art Bitcompression aus. Bin immernoch an Ratschlägen interessiert.
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd

Geändert von mael (13. Feb 2019 um 11:19 Uhr)
  Mit Zitat antworten Zitat