Ord

Renvoie le code ASCII/Unicode d'un caractère

Syntaxe

function Ord(s: String): Integer
s: caractère à évaluer

Explication simplifiée

La fonction renvoie la valeur du point de code Unicode du premier caractère de la chaîne s.
NB : les caractères ASCII sont un sous-ensemble d'Unicode, correspondant aux caractères dont le point de code est compris entre 0 et 127.

Si la chaîne s est vide, la fonction renvoie 0.
Si s est une chaîne avec plusieurs caractères, seul le premier caractère est pris en compte.

Pour obtenir un caractère connaissant son code, utiliser Chr.

PrintLn(Ord('')); // renvoie 0
PrintLn(Ord('A')); // renvoie 65
PrintLn(Ord('AVION')); // renvoie 65

Explication avancée (cas des caractères Unicode > 65535)

Pour mémoire, les chaînes dans les scripts sont constituées d'une succession d'éléments de 16 bits.
La valeur numérique associée à chaque élément est donc comprise entre 0 et 65535.
Quand on applique Ord sur un élément de chaîne, on récupère cette valeur numérique.

Quand une chaîne contient du texte, il est encodé en UTF-16, ce qui implique que chaque caractère peut occuper 1 ou 2 éléments de chaîne (ce qui explique que le nombre d'éléments de chaîne renvoyé par la fonction Length soit toujours égal ou supérieur au nombre de caractères de la chaîne).

La majorité des caractères usuels font partie du Plan multilingue de base (PMB) et sont contenus dans un seul élément de chaîne.
Ainsi, pour tous les caractères du PMB, la valeur numérique de l'élément de chaîne est la valeur du point de code Unicode du caractère.

Mais les caractères au-delà du PMB, par exemple certains idéogrammes chinois, sont encodés sur 2 éléments de chaîne.
Depuis Qubes 6.1, si on applique Ord sur une chaîne dont le premier caractère est représenté par 2 éléments de chaîne, Ord renvoie son point de code Unicode (et plus uniquement la valeur du premier élément constitutif du caractère).

// Cas particulier des caractères au-delà du Plan multilingue de base Unicode :
var s:=Chr(131072); // idéogramme chinois
PrintLn(s);
PrintLn(Ord(s)); // renvoie 131072 : caractère encodé sur 2 unités de code 16 bits
PrintLn(Ord(s[1])); // renvoie 55360 : premier élément UTF16
PrintLn(Ord(s[2])); // renvoie 56320 : deuxième élément UTF16

Classification

Internal Chaine