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

 Delphi Discussion :

Autoriser que la saisie de chiffres dans un InputQuery


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut Autoriser que la saisie de chiffres dans un InputQuery
    Bonjour,
    après des recherches dans la faq et les tutos, je post sur le forum. Dans mon appli, je demande à l'utilisateur de rentrer un nombre pr le programme. Je fais un InputQuery. Ce nombre doit etre entre 0 et 50 donc je le test. Le problème, c'est que si il rentre une lettre, ca fait planter le prog. Le InputQuery rend un string donc je le converti en float pour le tester.
    Ma question est simple : peut on bloquer la saisie des lettres ? Ou existe t-il une autre méthode pour tester la valeur entrée ?
    Je vous met mon bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Repeat
    InputQuery('Entrez une valeur','Quelle valeur ? (max 50)',nb);
    Until ( (StrToFloat(nb)>=0) and (StrToFloat(nb)<=50) );

  2. #2
    Inactif
    Inscrit en
    Février 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 46
    Points : 46
    Points
    46
    Par défaut Une instruction.. peut être suffaisante..
    Essaye plutôt d'ajouter cette fonction;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function CorrectNumber(Const nb:String):Boolean;
    var i,L:Word;
    begin L:=Length(nb); Result:=L>0;
     for i:=1 to L do 
     if not (nb[i] in [0..9]) 
       then Exit; // Sortir directement de la fonction..
     Result:=True
    end;
    puis ceci..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Repeat
    InputQuery('Entrez une valeur','Quelle valeur ? (max 50)',nb);
    // ajouter ceci,
    Until (CorrectNumber(nb))and( (StrToFloat(nb)>=0) and (StrToFloat(nb)<=50) );
    a+
    N'oublie pas ,
    au lieu de faire ou
    et efin !! sinon, en reste toujours ..

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    repeat
      InputQuery('Entrez une valeur', 'Quelle valeur ? (de 0 à 50)', nb);
      try
        TheNb:=StrToFloat(nb);
      except // si erreur après le try, va dans la clause except
        TheNb:=-1;
      end;
    until ( TheNb >= 0 ) and ( TheNb <= 50 );
    mais si c'st un entier dont tu as besoin ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    repeat
      InputQuery('Entrez une valeur', 'Quelle valeur ? (de 0 à 50)', nb);
      TheInt:=StrToIntDef(nb, -1);
    until TheInt in [0..50];
    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 à l'essai
    Inscrit en
    Mai 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 23
    Points : 14
    Points
    14
    Par défaut
    et ca marche (of course)
    merci

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Un petit ?
    A+

Discussions similaires

  1. [FAQ] Les formulaires (partie 2) : Comment n'autoriser que la saisie de chiffres dans un champ texte ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 4
    Dernier message: 18/11/2013, 21h34
  2. [JavaScript] [FAQ][MAJ] Comment n'autoriser que la saisie de chiffres dans un champ texte?
    Par Bisûnûrs dans le forum Contribuez
    Réponses: 8
    Dernier message: 10/01/2012, 18h08
  3. Réponses: 3
    Dernier message: 14/09/2007, 14h30
  4. Réponses: 4
    Dernier message: 13/07/2007, 14h46

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