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 Perl Discussion :

range iterator error


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut range iterator error
    Bonjour,

    En essayant d'effectuer une commande " for(X .. Y) " je recois une erreur de range iterator. Apparemment Y est trop grand. Ce qui resout ce probleme est de rajouter un "0" devant 'X' & 'Y'.

    Est ce qqu'un pourrait m'expliquer ce qu'est le range iterator error et pourquoi le fait de rajouter '0' resout le probleme ??

    Merci.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    J'aimerais bien que tu nous dises avec quels nombres tu obtiens cette erreur.
    Le "range operator" est le petit ".." qui construit la séquence des nombres de X à Y. Pourrais tu nous donner l'énoncé exact de l'erreur ?
    Par ailleurs rajouter un 0 devant tes nombres n'est pas une bonne idée : ça les mets en base octale.

    --
    Jedaï

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 24
    Par défaut
    Je travaille en Hexa, mais la je te donne les valeurs en decimal:
    for($X..$Y){..} #$X=2147487280 && $Y=2147487319

    L'erreur que je recois est : Range iterator outside integer range .

    Apres une petite recherche sur internet j'ai trouve qu'afin que cela passe il faut rajouter un "0" (ils appellent ca magical string !?).
    Donc ma ligne ressemble a ca:

    for("0".$X.."0".$Y) .....

    Tout marche correctement. J'aurais voulu savoir si qqu'un pourrait m'expliquer ceci??

    Merci.

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Si tu rajoutes un "0" comme ça, ça va. C'est parce que Perl traite alors tes nombres comme des chaînes de caractères et que ++ est capable d'"incrémenter" des chaînes de caractères d'une longueur arbitraire et que cet incrémentation correspond à l'incrémentation normale sur les entiers pour les chaînes qui en représentent.

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( 'a' .. 'ba' ) { print "$_\n" }
    pour voir un exemple d'incrémentation de chaîne.

    --
    Jedaï

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