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++/CLI Discussion :

Comment gérer et utiliser le texte présent dans un TextBox


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut Comment gérer et utiliser le texte présent dans un TextBox
    Bonjour,

    Je commence mon premier programme en C++ avec Visual Studio 2005. Dans ma toute petite application, j’ai besoin de travailler avec des TextBox pour effectuer un calcul en fonction de plusieurs données. En gros j’ai 4 TextBox avec lesquels il faut que j’effectue diverses fonctions mathématiques de base.
    Mon problème est le suivant :
    Je suis incapable de traiter ce que j’entre dans un TextBox. Par exemple, j’entre la valeur 140 et je voudrais l’associer à une variable dans mon programme…et bien j’y arrive pas…Visual me donne toujours une erreur du genre "impossible de convertir du String en Double" ou autre.
    Je suis bloqué dans l’autre sens aussi. Je ne suis pas capable d’écrire une variable dans un TextBox.

    Après toute une journée de recherches infructueuses, je viens vers vous pour de l’aide. Pouvez-vous donc m’expliquer comment gérer un TextBox, effectuer des calcul avec ce qui est dedans, vérifier que ce soit que du numérique (pour un calcul c’est mieux)…

    Merci d’avance à tous, et bon dimanche soir.

    Julien

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Passe faire un petit tour du côté du tutoriel de farscape sur les MFC : sources indispensable d'information.

  3. #3
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    bonjour,

    Merci pour vos réponses. j'ai regardé vite le f.a.q mais je ne comprendre pas trop comment cela fonctionne les conversions. Je vais donc bien lire le tuto, comme je débute, je pense que c'est vraiment cool.

    Merci encore et bonne journée.

    A+

    Julien

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonsoir,

    Bon et bien après lecture du tuto et beaucoup de recherche sur le net, j’arrive toujours pas a faire ce que je veux…

    Je m’explique :
    J’ai un textBox qui à pour nom textBoxCapa
    J’ai besoin de convertire ce qui est dans ce textBox en ??? pour ensuite vérifier si c’est du numérique.

    Je voulais convertire ce qui est dans le textBox->Text (qui est du String si je ne me trompe pas) en string pour ensuite en faire un char* et tester chaque caractère, mais je suis trop bidon…

    Si vous pouvez m’en dire plus sur tout ça, c’est vraiment cool.

    Merci d’avance.

    A+

    Julien

  6. #6
    Membre actif
    Inscrit en
    Mars 2002
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 68
    Par défaut
    precise ton objectif !

    par exemple, tu peux specifier que le textbox soit seulement des chiffres dans les propriete.

    tu peux aussi extraire le contenu de la textebox par un :
    CString INFO;
    textboxcapa.GetWindowTextA(INFO);

    puis faire CString TEST = INFO.GetAt(0);

    et ensuite tester directement par une maniere ou d'une autre si c'est un chiffre ou avec une fonction precise ( que je connais pas, jai appris sur vba sa fonction equivalente ) donc je pense qu'elle existe !!

    Donc pour reprendre , precise tes objectif de maniere precise et concise , sans oublier les cas particuliers, et documente toi sur les fonction membre des fonctions ( jen ai besoin aussi ! )

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Es-tu sûr que tu programmes en MFC ?

    D'après tes messages, je penserais plutôt que tu programme en Windows Forms (avec le langage C++/CLI)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonjour,

    Et bien effectivement c’est pas du MFC que j’essais de faire… mais du Windows Forms C++.
    Il faut que je déplace le sujet.
    Quand j’ai posté, je pensais que Windows Forms et MFC étaient la même chose. Je suis désolé mais je suis vraiment au début de chez début de l’apprentissage de la prog. Je bidouille en vba mais le C++ c’est vraiment pas encore ça.

    Merci beaucoup pour les réponses, c’est vraiment cool.

    Julien

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Les Textbox se manipulent sans difficulté avec la classe String

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int var = 3;
    String^ buffer = gcnew String ("");
    buffer = String::Concat ("ma variable vaut", var);
    Textbox -> Text = buffer;
    te permet de mélanger de l'ASCII et des variables numériques

    Bonne soirée

    Jean-Louis

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonjour,

    Merci pour cette exemple. Si je comprend bien, c'est pour écrire dans un TextBox.

    Dans ce sens je rencontre pas de problème, par contre quand il faut récupérer ce qui est dans le textBox et le traiter, c'est pas la même chose.

    Voici ce que je voudrais faire :

    j'ai un textBox (textBoxCapa), il y a du texte ou du numérique dedans.
    je voudrais tester chaque caractères pour vérifier si c'est du numérique (je veux du numérique, car j'ai besoin d'effectuer un calcul avec cette valeur par la suite).

    Apparemment pour vérifier tous les caractères de mon textBoxCapa, il faut convertir de Cstring en string puis en tableau (avec Char []), c'est ce que je ne sais pas faire.

    Merci, A+

    Julien

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 243
    Par défaut
    Citation Envoyé par boz_j Voir le message
    Apparemment pour vérifier tous les caractères de mon textBoxCapa, il faut convertir de Cstring en string puis en tableau (avec Char []), c'est ce que je ne sais pas faire.
    As tu regardé comment fonctionne String::ToCharArray ?

    Il y a une floppée de fonction dans la class String, je suis comme toi, je débute; Si sous Visual tu tapes String:: l'outil Intellisense devrait ouvrir automatiquement un menu qui te propose toute une liste de fonction dont celle que je t'ai citée ..

    Tu as aussi String::GetType ...

    Bonne soirée
    J.L.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonsoir,

    J’ai effectué quelques recherche sur ToCharArray est j’ai presque résolu mes problème.

    Voici ce que je fais maintenant :

    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
    String^ MaStringCapa = textBoxCapa->Text; //ce qui est dans le texBox devient une String "MaString"
    int longueurCapa = MaStringCapa->Length; //compte la longueur de la String
    array<Char>^ tableauCapa = MaStringCapa->ToCharArray(); // convertion du la String en un tableau "tableauMaString"
    for (int i=0; i<longueurCapa; i++)
    {
    	if ((isdigit(tableauCapa[i])) || (tableauCapa[i]==0x2E) )//0x2E pour le .
    	{
    		capaPile = Convert::ToInt32(textBoxCapa->Text);
     
    	}
    	else
    	{
    	if (tableauCapa[i]==0x2C) //ox2C pour la ,
    	{
    		MessageBox::Show ("Attention, utiliser seulement le . et pas la ,");
    	}
    	else
    	{
    		MessageBox::Show ("Attention, la capacité entrée est invalide");
    	};
    		textBoxCapa->Text = "";//efface ce qui est dans le textBox
    		i=longueurCapa; //pour sortir de la boucle
    	}
    };

    Il me reste q’un dernier problème. C’est sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    capaPile = Convert::ToInt32(textBoxCapa->Text);
    Je veux convertir ce qui est dans le TexBox pour faire un calcul mais quand il y a un un point le programme plante.

    J’aimerais donc savoir comment convertir ce qui est dans le TextBox si il y a un point.

    Bonne soirée

    Julien

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonjour,

    J’ai trouvé la solution à mon problème.
    Pour éviter les erreurs (à cause de . ou ,) en faisant un calcul avec le texte présent dans un textBox, il faut le convertir comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maVariable= Convert::ToDouble(MaString, System::Globalization::CultureInfo::InvariantCulture);
    Merci encore pour votre aide.

    A+

    Julien

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/05/2014, 13h11
  2. Réponses: 2
    Dernier message: 13/08/2006, 23h56
  3. Réponses: 1
    Dernier message: 03/08/2006, 13h25
  4. [DAO] Comment gérer les liens avec la bdd dans mes classes?
    Par Wormus dans le forum Autres
    Réponses: 6
    Dernier message: 22/02/2006, 16h14
  5. Réponses: 12
    Dernier message: 22/11/2005, 13h17

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