Los tipos de datos enteros, booleanos, Caracteres, enumerados y subrangos, se les conoce también como tipos de datos ordinales, porque estos tipos de datos tienen un número limitado de datos posibles, que vienen dados en un orden definido.

La rutina Ord nos permite obtener el orden que ocupa un tipo de dato ordinal, por ejemplo si usamos: Ord(45), este nos devolverá 45, ya que ese es el orden en el que se encuentra, dentro de los números enteros. Pero si se pasa un tipo de dato carácter en UTF8 entonces esta función devolverá el código UTF16 (sólo los BMP de Unicode) del carácter que se le esté pasando. Ejemplo:

En el caso de los tipos enumerados Ord nos devolverá el orden en que ha sido colocado el dato dentro de los paréntesis que representan sus valores.

La rutina Chr, es también otra rutina que devuelve un tipo de dato carácter, esta rutina sólo se usa para saber, que número representa un determinado carácter en una codificación de caracteres de 8 bits (ASCII, iso-8859-1, Windows-1252, etc). Esta rutina sólo trabaja con el tipo de dato byte si se intenta pasar a esta rutina un número mayor entonces el valor pasado a la función se trunca y se muestra el carácter correspondiente al último byte. Ejemplo:

Las rutinas como Ord y Chr se les conocen como funciones, porque estas devuelven un dato después de su ejecución, que deben ser guardados en una variable; y a las rutinas Write y Read se les conoce como procedimientos.