Range check error incompréhensible
Bonjour à tous
Je déclare quelques tableaux lors du paramétrage de la form :
Code:
1 2 3 4 5 6
| private
{ Déclarations privées }
T0,T1: array of TPeekTristimulus;
C0,C1: array of TColor;
P0,P1: array of single;
Appariement: array of single; |
Dans l'une des fonctions déclarées dans la form je dimensionne ces tableaux :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| SetLength(P1,CurSegmentation.NbrCalcSeg);
SetLength(C1,CurSegmentation.NbrCalcSeg);
SetLength(T1,CurSegmentation.NbrCalcSeg);
SetLength(FullDelta,CurSegmentation.NbrCalcSeg);
SetLength(Appariement,CurSegmentation.NbrCalcSeg);
for k:=0 to pred(CurSegmentation.NbrCalcSeg) do
begin
FillChar(P1[k],SizeOf(TPeekTristimulus),#0);
C1[k]:=0;
FillChar(T1[k],SizeOf(TPeekTristimulus),#0);
FillChar(FullDelta[k],SizeOf(TPeekColorDelta),#0);
Appariement[k]:=0;
end; |
Dans les options du compilateur (à cause d'une perte inexpliquée de données d'une variable) j'ai coché Vérification des limites et Vérification des débordements. Or depuis que j'ai mis ces conditions le compilateur génère une "Range Check error" lors de l'initialisation du tableau C1 à la ligne 9 :oops:
Observez que la variable utilisée pour la limite de la boucle k (ligne 6) est la même que celle utilisée pour dimensionner le tableau C1 (ligne 2)
Quelqu'un peut-il m'expliquer ? pour ne pas mourrir idiot et surtout pour achever correctement mon développement.
Merci d'avance à tousd les forumers
Une précision de l'auteur de la question
Je viens de tracer l'erreur avec un point d'arrêt :
La boucle k s'effectue entre 0 et 63, l'erreur se produit quand k = 55 !!!
Encore plus mystérieux !
Autant pour moi ! l'erreur est dans l'énnoncé
L'erreur ne se trouve pa à la ligne 9, mais comme toujours le compilateur signale l'erreur à la ligne qui suit celle où elle se produit, c'est à dire ligne 8. Or la ligne 8 initialise le tableau P1 avec la taille d'une structure alors que ce tableau est un tableau de single.
Correction faite tout baigne :ccool: y compris la perte inexpliquée de données d'une variable pour laquelle j'ai surveillé les débordements ! Bien m'en a pris...
Mille excuses, je coche résolu