Oder ist Ord() nur ein Relikt aus der TP Zeit ?
Code: Alles auswählen
WriteLn(Ord('x')); // -> 120
WriteLn(byte('x')); // -> 120
Code: Alles auswählen
WriteLn(Ord('x')); // -> 120
WriteLn(byte('x')); // -> 120
Code: Alles auswählen
type
TTest = (A=1337);
begin
WriteLn(Byte(A)); // 57
WriteLn(Ord(A)); // 1337
end.
Wenn du einen Typcast machst hast du halt immer die implizite Annahme über die Größe des typen.
Code: Alles auswählen
var
p:Pointer;
begin
WriteLn(Ord(1234)); // io.
WriteLn(Ord('ö')); // error.
WriteLn(Ord(p)); // error.
'ö' ist in der von Lazarus verwendeten UTF8-Kodierung kein Char, sondern ein String bestehend aus zwei Chars (#$C3#$B6), also kein Ordinal-Typ.