Exception de class 'External: SIGSEGV'
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:
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:
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:
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.