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

[LG] Gérer les erreurs de frappe


Sujet :

Langage Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [LG] Gérer les erreurs de frappe
    Bonjour, j'ai fait un programme en pascal où je demande à l'utilisateur d'entrer des nombres mais le probléme est que lorsque l'utilisateur entre des lettres, le programme plante (normal mais bon). Je voudrais savoir s'il est possible de détecter le type de donnée que l'utilisateur rentre pour pouvoir lui reposer la question lorsqu'il se trompe. Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    Une technique assez simple est de récupérer en premier un chaîne de caractères de type string, puis d'essayer de convertir cette string en nombre entier, avec val (qui permet de détecter les erreurs)
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    vous pouvez réaliser des procédures de saisie controlée avec pour
    base, la fonction READKEY

    Ainsi la procédure saisisnum n'accepte que des chiffres (entre 2 et 8
    pour l'exemple)

    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
     
    program tsaisie;
    uses crt,sysutils;
    var chaine : string;
    procedure saisisnum (var sai : string; min,max : integer);
    var c : char;
        l : integer = 0;
    begin
         sai := '';
         while true do begin
            c := readkey;
            if (c =char(13)) and (l >= min) then break;
            if &#40;c < '0'&#41; or &#40;c > '9'&#41; then continue;
            write&#40;c&#41;;
            sai &#58;= sai+c;
            l &#58;= l+1;
            if l >= max then break;
        end;
    end;
    begin
         saisisnum &#40;chaine,2,8&#41;;
         writeln;
         writeln &#40;chaine&#41;;
         readln;
    end.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wormful_sickfoot
    Une technique assez simple est de récupérer en premier un chaîne de caractères de type string, puis d'essayer de convertir cette string en nombre entier, avec val (qui permet de détecter les erreurs)
    Lorsqu'il y a convertion, il convertie de quelle maniére une chaine de caractére? Je veut dire si la variable est par exemple 'hihi', que va t'il me renvoyer?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par HRS
    vous pouvez réaliser des procédures de saisie controlée avec pour
    base, la fonction READKEY

    Ainsi la procédure saisisnum n'accepte que des chiffres (entre 2 et 8
    pour l'exemple)

    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
     
    program tsaisie;
    uses crt,sysutils;
    var chaine &#58; string;
    procedure saisisnum &#40;var sai &#58; string; min,max &#58; integer&#41;;
    var c &#58; char;
        l &#58; integer = 0;
    begin
         sai &#58;= '';
         while true do begin
            c &#58;= readkey;
            if &#40;c =char&#40;13&#41;&#41; and &#40;l >= min&#41; then break;
            if &#40;c < '0'&#41; or &#40;c > '9'&#41; then continue;
            write&#40;c&#41;;
            sai &#58;= sai+c;
            l &#58;= l+1;
            if l >= max then break;
        end;
    end;
    begin
         saisisnum &#40;chaine,2,8&#41;;
         writeln;
         writeln &#40;chaine&#41;;
         readln;
    end.
    Es qu'il est possible d'utiliser ta methode sans intervalle? Je veut dire en métant simplement si tel variable est de tel type?

  6. #6
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Il va renvoyer ce qui est écrit dans l'aide : autrement dit la première ressource à consulter avant le forum.



    En plus on gagne du temps

    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    C'est bon sa marche maintenant avec la methode du val merci.

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

Discussions similaires

  1. probleme pour afficher les erreurs de frappe
    Par Asmod_D dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/06/2007, 22h26
  2. question sur les erreurs de compilation
    Par vince3320 dans le forum C
    Réponses: 5
    Dernier message: 19/04/2004, 12h34
  3. Recuperer les erreurs des requetes sql en asp
    Par emile13 dans le forum ASP
    Réponses: 3
    Dernier message: 01/04/2004, 14h49
  4. [web] comment afficher les erreur d'un cgi
    Par chtiboss dans le forum Web
    Réponses: 6
    Dernier message: 24/12/2003, 12h22
  5. Empecher les erreurs du débogeurs
    Par remixtech dans le forum EDI
    Réponses: 9
    Dernier message: 04/06/2003, 14h45

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