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 :

ISNUMBER et ISTEXT


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut ISNUMBER et ISTEXT
    Bonjour à tous !

    Je réalise un projet sous C++ Builder afin de programmer un logiciel de data mining et je souhaite utiliser les fonctions ISNUMBER() et ISTEXT() pour vérifier si mes variables sont discrètes ou continues.
    Je n'arrive pas à trouver la bibliothèque qu'il faut ajouter.
    J'obtiens l'erreur suivante à la compilation :"Appel a une fonction non définie".
    La syntaxe est-elle correcte : " if(ISNUMBER(a)) {...} ?

    J'espère que vous pourrez m'aider ...
    Merci d'avance,
    Marion

  2. #2
    Membre expérimenté Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Par défaut

    et regardes ensuite, je ne suis pas sûr que la typographie soit bonne, je crois de mémoire que ces fonctions s'appliquent à des AnsiString...

    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AnsiString MyString;
    MyString="123";
    if(!MyString.ISNUMBER())
                  ShowMessage("Voici une chaîne qui est un nombre: "+MyString);
    if(!MyString.ISTEXT())//Ceci est forcément vrai si le 1er message est faux
                  ShowMessage("Voici une chaîne qui est une chaîne: "+MyString);
    donc si je ne me trompes pas, après tu peux transformer l'AnsiString
    en entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int le_nombre;
    if(!MyString.ISNUMBER())
                  le_nombre=StrToInt(MyString);
    ou en décimal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float la_valeur;
    if(!MyString.ISNUMBER())
                  la_valeur=StrToFloat(MyString);
    @+
    Mattetfamilly

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    Merci pour ta réponse si rapide !
    La chaine que je passe en paramètre est en effet une AnsiString.
    J'ai essayé la syntaxe que tu as marquée (ainsi que celle que j'ai marqué car les 2 étaient sur internet). Mais lorsque j'ai essayé, ça me mettais aussi l'erreur, c'est la raison pour laquelle je pense qu'il doit memanquer une bibliothèque. Je les ai toutes ajoutées (enfin toutes celles que j'ai pu trouver sur le net ! mais rien n'a marché ! J'avais touours mon erreur !)
    Sur l'aide de C++ Builder et sur le net je n'ai rein trouvé concernant la bonne bibliothèque ... Peut etre la connais tu ?
    Je réessaierais ça lundi ...
    Merci encore,
    Marion

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Je ne pense pas que cela soit un syntaxe correcte.
    Essaies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    String S = Edit1->Text;
    if (IsNumeric(S)   )
    {
    	ShowMessage("oki num");
    }
    else
    {
    	ShowMessage("pas oki, pas num");
    }
    Sinon, convertir sans ménagement en int:
    et gérer l'erreur soulevée en cas de valeur non conforme ( EConvertError ) ...
    Pas sur que ce soit une idée géniale tout de même

    @ +

  5. #5
    Membre expérimenté Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Par défaut
    En prenant ToInt, il faudrait faire un bloc try / catch pour gérer l'erreur,
    dans son cas, il vaut mieux utiliser un ToIntDef. Si la valeur n'est pas un entier, alors la fonction renvoit la faleur par défaut indiquée sans générer d'erreur.
    Dans ce cas, je penses que l'utilisation d'un gestionnaire d'erreur par l'utilisation d'un try catch serait trop lourd...

    Je vérifierais demain au boulot comment marche ISNumeric. Il me semble l'avoir utiliser réçamment.


    @+
    Mattetfamilly.

  6. #6
    Futur Membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    Citation Envoyé par Mattetfamilly
    Je vérifierais demain au boulot comment marche ISNumeric. Il me semble l'avoir utiliser réçamment.
    Merci beaucoup c'est gentil ! Merci à vous deux, toutes les solutions sont à essayer car je ne peux pas contourner ce problème ... Il me faut savoir si la variable est une variable contine ou discrète ! Et le seul moyen que j'ai trouvé c'est ISNUMBER et ISTEXT !

    Merci encore,
    Marion

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

Discussions similaires

  1. fonctions isnumeric, istext
    Par solipop dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/07/2011, 13h24
  2. Equivalent à isnumber()
    Par sebastien00 dans le forum SQL
    Réponses: 3
    Dernier message: 10/11/2008, 18h56
  3. Commentaires sur ma fonction isnumber(char *)
    Par GnuVince dans le forum C
    Réponses: 2
    Dernier message: 16/10/2007, 17h40

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