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

Free Pascal Discussion :

[Débutant] Runtime error 221 : ranges overrun [Free Pascal]


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 79
    Par défaut [Débutant] Runtime error 221 : ranges overrun
    Bonsoir à tous donc comme indiqué dans le titre j'ai un soucis dans l'éxécution de mon programme, il se compile, il se lance, et lorsque je rentre une valeur celui ci plante et me met un message type 'run time error: 221 ranges ovverrun' (j'ai vu un post récent cependant c'est pas l'aide que je désire). J'ai denombreuses fonctions, divers tableau mais j'ai revérifié l'érreur ne peu provenir de la, J'ai un doute et j'aurais besoin de votre aide pour me dire si l'orde est le bon dans une de mes procédure (je pense avoir fais des erreur dans les begin et end)

    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
    procedure centaine(N:integer);
     
    var Dizaine, Reste:integer;                                           
    begin
     
    Dizaine:=trunc(N/10);                                                
      Reste:=trunc((N-TRUNC(N))*100);
      if((Dizaine<>7) or (Dizaine<>9) or (Dizaine<>1)) then                
         begin
          Write(Diz[Dizaine]);                                             
          if((Dizaine<>8) and (Reste=1))then                               
            write('et', Chif[Reste])                                      
            else if(Reste<>0)then                                             
              write(Chif[Reste]);                                        
         end
       else if( (Dizaine=1) or (Dizaine=7) or (Dizaine=9) )then
               begin
               if((Reste>=1) and (Reste<=6))then
                 begin
                   Dizaine:=Dizaine-1;
                   Reste:=Reste+10;
                   if((Dizaine=6) and (Reste=11))then
                      write(Diz[Dizaine],'et',Chif[Reste])
                   else write(Diz[Dizaine],Chif[Reste]);
                  end
     
            else if(Reste<>0)then
                      write(Diz[Dizaine],Chif[Reste])
                 else write(Diz[Dizaine]);
                end;
    END;

    Merci de votre aide

  2. #2
    Membre chevronné

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Oui c'est clair. Voilà ton code proprement tabulé (tout bon éditeur peut le faire pour toi):

    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
    procedure centaine(N:integer);
     
    var Dizaine, Reste:integer; 
    begin
     
      Dizaine:=trunc(N/10); 
      Reste:=trunc((N-TRUNC(N))*100);
      if((Dizaine<>7) or (Dizaine<>9) or (Dizaine<>1)) then 
        begin
          Write(Diz[Dizaine]); 
          if((Dizaine<>8) and (Reste=1))then 
            write('et', Chif[Reste]) 
          else if(Reste<>0)then 
            write(Chif[Reste]); 
          end
        else if( (Dizaine=1) or (Dizaine=7) or (Dizaine=9) )then
          begin
            if((Reste>=1) and (Reste<=6))then
              begin
                Dizaine:=Dizaine-1;
                Reste:=Reste+10;
                if((Dizaine=6) and (Reste=11))then
                  write(Diz[Dizaine],'et',Chif[Reste])
                else write(Diz[Dizaine],Chif[Reste]);
                end
     
              else if(Reste<>0)then
                write(Diz[Dizaine],Chif[Reste])
              else write(Diz[Dizaine]);
              end;
          end;
        end;
    end;
    J'ai rajouté les "end" qui manquaient, à toi de voir s'ils sont à la bonne place!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 79
    Par défaut
    je te remercie vraiment bredelet c'est vrai que c'est plus lisible, cependant je ne comprend pas, il y'a 4 begin donc normalement 4 end.. et la il y en a beaucoup plus

  4. #4
    Membre chevronné

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Citation Envoyé par Jérém08 Voir le message
    je te remercie vraiment bredelet c'est vrai que c'est plus lisible, cependant je ne comprend pas, il y'a 4 begin donc normalement 4 end.. et la il y en a beaucoup plus
    J'avais pas fait gaffe, corrigé maintenant.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 79
    Par défaut
    Encore merci pour ton aide, mais je vois toujours pas trop ou tu veux en venir étant donné que j'avais incorporé mais end dans la procédure, et donc avec les tiens en plus sa en fait beaucoup trop, cela veut dire que les miens sont à retirer? je suis débutant en pascal donc j'apprend encore

    merci comme même et bonne nuit

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 79
    Par défaut
    C'est bon j'ai trouvé tu en avais mis deux en trop, j'arrive désormais à compiler et à le lancer mais me reste le problème de ranges over... donc cela vient d'un autre problème, tableau, programme principal, ou autre procédure.. c'est un mystère mais je vais m'y plonger dedans.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/08/2010, 16h20
  2. Réponses: 1
    Dernier message: 23/04/2008, 10h37
  3. [TP]Runtime error 106 à l'exécution
    Par BlackTiger dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 25/01/2004, 21h50
  4. [LG]runtime error 202
    Par picsou123 dans le forum Langage
    Réponses: 2
    Dernier message: 14/11/2003, 22h53
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51

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