Bonjour,

Depuis quelques jours, je rencontre le même problème, malgré mes aménagements de code, à la même ligne.

Mes variables Globales:
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
var
  Form1          : TForm1;
 
  coordsPionsNX  : array[1..16] of integer; // Coordonnées en X (left) des pions noir
  coordsPionsNY  : array[1..16] of integer; // Coordonnées en Y (top) des pions noir
  nomsPionsN     : array[1..16] of string;
 
  coordsPionsRX  : array[1..16] of integer; // Coordonnées en X (left) des pions rouge
  coordsPionsRY  : array[1..16] of integer;
  nomsPionsR     : array[1..16] of string;
 
  indexInitN     : integer = 1;
  indexInitR     : integer = 1;
 
  coordsCasesX   : array[1..64] of integer;
  coordsCasesY   : array[1..64] of integer;
  nomsCases      : array[1..64] of string;
 
  // Emplacement des pieces sur l'Echiquier : Il y a des cases ayant des Pieces Rouge - Noir - Vide
  emplacementPieces    : array[1..64] of string; 
 
  pionNSelectionner    : array[1..16] of boolean; // Tableau du pion Noir Sélectionner
  pionRSelectionner    : array[1..16] of boolean; // Tableau du pion Rouge Sélectionner
 
  // Cases sur lesquelles la pièce sélectionner peut être déplacer
  deplacementPieces    : array[1..64] of boolean;
.......
.......

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
 
// typePiece : roi, tour, fou, pion etc..
// posInTab : index 
procedure typeDeplacementPionN(typePiece : string; posInTab : integer);
var
   x                         : integer;    // variable pour les boucles
   yTop, yDown               : integer;    // variable pour l'incrémentation positive et négative
   continuer                 : boolean;   // permet de sortir du repeat
   compte, increment         : integer;   // fait un comptage - permet de sauter une ou des 'lignes' dans l'échiquier
 
   coordEnX                  : integer;  // Coordonnée X de la pièce sélectionner
   coordEnY                  : integer;  // Coordonnée Y de la pièce sélectionner
 
begin
    // Réinitialisation Du Tableau des Déplacements
    for x:= 1 to 64 do
    begin
      deplacementPieces[x]   := false;
    end;
 
    coordEnX                  := coordsPionsNX[posInTab];
    coordEnY                  := coordsPionsNY[posInTab];
 
 
 
    case typePiece of
       {UNE TOUR}
       'uneTour'   : begin
 
             increment := 48;   // Incrémente de 48 'pixel' (je ne connais pas l'unité dans Lazarus)
             compte    := 1;     // Effectue un comptage
             continuer := true; // Permet de sortir du repeat
             yTop        := 1;    // Variable qui s'incrémente positivement
 
             repeat
 
               // Lorsque COMPTE atteind <8>, INCREMENT permet l'ajout d'une ligne
               if compte > 8 then
               begin
                    compte       := 1;
                    increment    := increment + 48;
               end;
 
               // Si limite des Cases de L'Echéquier n'est pas Dépasser
               // Si les Coordonnées du Déplacement Correspond à une Case
               if (coordEnY + increment <= 392) and (coordEnY + increment = coordsCasesY[yTop]) and
                   (coordEnX + increment = coordsCasesX[yTop])  then
               begin
 
                    // Si à Cet Emplacement est Vide ou Contient une PieceRouge
                    if (emplacementPieces[yTop] = 'vide') or (emplacementPieces[yTop] = 'pieceRouge') then
                    begin
                         deplacementPieces[yTop] := true;
                         if emplacementPieces[yTop] = 'pieceRouge' then
                         continuer := false;
                    end
                    else
                    begin
                         continuer := false;
                    end; 
               end;
 
               yTop              := yTop + 1;
               compte            := compte + 1;
             until continuer = false;
    end; 
end;
L'exception à été signalé à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 if (coordEnY + increment <= 392) and (coordEnY + increment = coordsCasesY[yTop]) and
                   (coordEnX + increment = coordsCasesX[yTop])
Pourtant, mon code pour le déplacement du roi et du pion, UNE CASE, ne pose pas de problème.