Ord passt sich an den Quell-Datentyp an (egal welcher ordinaler Typ das ist ... AnsiChar, WideChar, Enum usw.)
und Chr hängt vom Compiler ab. (genauso wie bei Ch
ar)
Genauso, wie im
ANSI, arbeiten diese Funktionen immer nur auf einzelnen Chars/Speichereinheiten und nicht auf komplexeren "MultiBytes".
Im AnsiString also nur auf
einem Byte (AnsiChar) und im
Unicode nur auf einem Word (WideChar).
Mit sowas wie UTF-8 oder den Surrogates kommen diese Befehle nicht klar und interpretieren natürlich nur die einzelne Chars und nicht komplette "Zeichen".
Somit ist seit Delphi 2009 das Chr oder Char ein WideChar und vorher war es ein AnsiChar.
Und beim Ord hat sich mit Delphi 2009 garnichts geändert.