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

C++Builder Discussion :

tester si une chaine de caractère est un entier ?


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut tester si une chaine de caractère est un entier ?
    slt a tousse,j'ai créé un memo, je veux dire a mon compilateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AnsiString ligne=Memo1->Lines->Strings[line];
     
    if(ligne[i]== int) opération;
    quelque soit l'entier (int)
    comment effectuer cette condition ?
    merci

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Peut-être qu'il y a d'autre façon, mais présentement la façon qui me vient en tête est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        int i;
        try
        {
            i = StrToInt(ligne[i]);
        }
        catch(EConvertError &Exception)
        {
            ShowMessage("Ceci n'est pas un entier");
        }
    PS: Le code à été pris dans FAQ

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    Sinon il y a une solution sympa avec l'utilisation des expressions régulières.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Citation Envoyé par kineton Voir le message
    Sinon il y a une solution sympa avec l'utilisation des expressions régulières.
    bonsoir,
    laquelle ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    Citation Envoyé par farid0031 Voir le message
    bonsoir,
    laquelle ?
    Et bien tu peut tester avec une expression régulière si ta chaine respecte une syntaxe prédéfinie (dans ton cas juste si elle est composée par un entier, par exemple avec l'expression ^([0-9]+) ).

    Un site sympa pour tester tes modèles avec les chaines de test.

    http://www.annuaire-info.com/outil-r...ion-reguliere/

    ps : l'utilisation dans ce cas des expressions régulière est un peu 'limite' mais cela fonctionne et c'est quelque chose de très puissant et intéressant selon moi.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    On peut aussi faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <limits.h>
    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
     
    bool IsInt(AnsiString N)
    {
    int n = N.Length();
    bool f = false;
    int i = 1;
    if(n != 0)
        {
        n++;
     
        i = i + ( (N[1] == '+') || (N[1] == '-') );
     
        f = (i < n);
     
        for(int j = i; f && (j < n); j++)
            {
            f = f && (N[j] >= '0') && (N[j] <= '9');
            }
        }
    // Tester si la valeur entre dans un int
    if(f)
        {
        double d = N.ToDouble();
        f = (d >= INT_MIN) && (d <= INT_MAX);
        }
    return f;
    }
    J'ai testé comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
    {
    if(IsInt(Edit1->Text)) Shape1->Brush->Color = clLime;
    else Shape1->Brush->Color = clRed;
    }
    A plus !

  7. #7
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    J'ai pas BCB sous la main pour tester, je te propose une idée du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(ClassNameIs(Edit1 -> Text) == ...)
      ...

  8. #8
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Citation Envoyé par kmaniche Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(ClassNameIs(Edit1 -> Text) == ...)
      ...
    Ton code ne fonctionne pas, premièrement ClassNameIs retourne un Boolean. Et deuxièmement, int n'est pas une classe.

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

Discussions similaires

  1. Vérifier qu'une chaine de caractères est un entier
    Par nguim dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/03/2014, 11h29
  2. tester si une chaine de caractères peut être parser
    Par reeda dans le forum Général Java
    Réponses: 3
    Dernier message: 03/02/2008, 07h47
  3. Vérifier qu'une chaine de caractère est bien présente
    Par kilian67 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 28/09/2007, 18h10
  4. Réponses: 6
    Dernier message: 14/12/2006, 17h27
  5. Réponses: 9
    Dernier message: 19/10/2006, 17h02

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