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 : Sélectionner tout - Visualiser dans une fenêtre à part
_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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?