IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Range check error incompréhensible


Sujet :

Langage Delphi

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut Range check error incompréhensible
    Bonjour à tous

    Je déclare quelques tableaux lors du paramétrage de la form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    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

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut 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 !

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 910
    Billets dans le blog
    6
    Par défaut
    ben, non : P1 est un tableau de Single et tu le remplis à coups de SizeOf(TPeekTristimulus)...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    803
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 803
    Par défaut 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 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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. range check error signifie quoi
    Par zanoubya dans le forum Débuter
    Réponses: 2
    Dernier message: 21/06/2010, 11h31
  2. [Free Pascal] Range check error while evaluating constants
    Par Nouwanda dans le forum Free Pascal
    Réponses: 3
    Dernier message: 23/11/2009, 01h42
  3. [Free Pascal] Erreur d'éxecution 201 : Range check error
    Par jeanmich dans le forum Free Pascal
    Réponses: 4
    Dernier message: 15/01/2009, 13h38
  4. IDHTTP : Range check error
    Par Hinox dans le forum Composants VCL
    Réponses: 0
    Dernier message: 12/06/2008, 16h10
  5. Range check error.
    Par Steff2 dans le forum Delphi
    Réponses: 2
    Dernier message: 16/07/2007, 21h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo