Comportement de la fonction Ord
Bonjour !
J'aurais besoin de traduire une expression booléenne en une valeur entière, pour ranger des boutons sur deux colonnes en fonction de leur numéro.
Code:
_x := 500 + 100 * Ord(index > 5)
Mais le compilateur dans sa version actuelle (13.11.10) refuse cette écriture, et renvoie le message "Char expected". Pourtant, la fonction Ord() fonctionne aussi avec un type énuméré défini par l'utilisateur, comme on peut le voir dans l'exemple suivant. Enfin, ce qui est vraiment curieux, c'est le résultat qu'on obtient en remplaçant Ord(expression) par integer(expression).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| (* Essai de la fonction Ord().
FlashPascal 2 v13.11.10 *)
program Ord;
{$FRAME_WIDTH 550}
{$FRAME_HEIGHT 400}
{$FRAME_RATE 12}
{$BACKGROUND $FFFFFF}
uses
Flash8;
const
m = 10;
type
tEnum = (a, b, c);
var
t: textField;
begin
t := textField.Create(nil, '', 0, m, m, stage.width - 2 * m, stage.height - 2 * m);
t.text :=
IntToStr(Ord('0')) + #10 + // 48
IntToStr(Ord(c)) + #10 + // 2
//IntToStr(Ord(false)); // Char expected
IntToStr(integer(false)) + #10 + // false
IntToStr(integer(1 = 1)); // true
end. |
Je sollicite humblement une correction de cette fonction pour la prochaine mise à jour. :)
En attendant, y aurait-il une astuce pour faire la conversion d'une booléen en entier ?