Recuperation de la valeur d'une textbox [Résolu]

Signaler
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014
-
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014
-
Bonjour,

Je suis débutant en Visual C++ et j'ai quelques problèmes avec une textbox. J'ai parcouru pas mal de forums, googler pas mal aussi, mais je n'arrive à rien du tout.

Alors voici mon problème: dans une textbox je dois rentrer une valeur (numérique uniquement). Après avoir entrer cette valeur, je voudrais effectuer quelques calculs et c'est là que je bloque. Impossible de récuperer cette fichue variable. J'ai essayer GetWindowText, ou d'autres fonctions conseillées dans des forums, mais rien n'y fait.

Est-ce que quelqu'un aurait une réponse pour moi?

D'avance merci

Ju!

17 réponses

Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
Autant pour moi , car je suis sous C# en ce moment. J'ai créé un petit projet pour me remettre dans le bain et voici :
int^ valeurAltitude = Convert::ToInt32(this->textBoxAltitude.Text);

louis
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Merci beaucoup pour ton aide Louis14. Ta fonction est effectivement fonctionnelle à un petit détail près. Il faut remplacer le .Text par ->Text comme suit:

int^ valeurAltitude = Convert::ToInt32(this->textBoxAltitude->Text); 

Merci à tous pour votre aide


Ju!
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Montre une partie de ton code pour qu'on puisse voir comment tu codes. On supposait que tu travailles en Win32 API.
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
Tu travailles avec quelle version de VC++?
Avec VC++ 6.0 il faut utiliser le classwizard pour ajouter une variable .
Pour les versions ultérieures, il click droit sur la classe de ta boite de dialogue et choisir le menu ajouter une variable. Dans la nouvelle boite de dialogue choisir variable de contrôle et selectionner l'ID de ta textbox.


louis
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Merci pour ces premiers conseils. Je travaille avec Visual C++ 2008. Ma question sera peut être bête, mais à quoi correspond la classe sur laquelle je suis sensé cliquer???

D'avance merci


Ju!
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
Faudrait surtout savoit EN QUOI tu codes sur VC++.

MFC ?
API directement ?
Framework .net ?

ciao...
BruNews, MVP VC++
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
la classe qui correspond à ta boite de dialogue


louis
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
GetWindowText() te permet de récupérer le texte du textbox. Elle prend en paramètre le HWND du texbox, un pointeur sur le buffer qui contiendra le texte et une valeur indiquant la taille du buffer. Si les trois paramètres sont valides il n'y a aucune raison pour que la fonction ne marche pas. Il faudra juste ensuite convertir le texte en entier avec une fonction du genre atoi().
GetDlgItemInt() te permet de récupérer directement la valeur numérique du textbox. Cette fonction à besoin de l'identificateur du textbox comme deuxième paramètre.
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Rebonjour à tous,

Merci pour votre aide, mais malheureusement, je n'arrive toujours pas a dompter cette satanée fonction. Qu'est ce que c'est que ce HWND? Est-ce que le pointeur contenant le texte est un pointeur déjà déclaré par défaut ou dois-je le déclaré moi-même? Finallement, qu'est ce que l'dentificateur du textbox? Où est-ce que cela se trouve?

Si quelqu'un a un exemple à mettre à disposition, je lui serait très reconnaissant.


Merci beaucoup


Ju!
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Je vous donne quelques bouts de code. Où est-ce que l'on peut trouver des informations par rapport au type de langage utilisé?



private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) 
{
 ULONG BytesWritten = 0;
 ULONG BytesRead = 0;
 unsigned char OutputPacketBuffer[64];	
 unsigned char InputPacketBuffer[64];	
 
 static unsigned char passage = 0;

 signed char ValueTemp;


if(checkBoxHumid->Checked)							// Si checkBox activée
 {
if(cmptHumidite < 20)							// Moyenne sur 20 valeurs
{
timer = InputPacketBuffer[3];
timer = timer << 8;
timer |= InputPacketBuffer[4];
moyenneHumiditeLong += timer;
cmptHumidite++;
}
else if(cmptHumidite >= 20)
{
moyenneHumiditeLong /= 20;
moyenneHumidite = (short)moyenneHumiditeLong;	// Conversion de variable pour affichage
if(moyenneHumidite > 65535)						// Si la moyenne dépasse la valeur max du
{												// timer, on efface la valeur et on recommence
cmptHumidite = 0;							// le calcul de moyenne
moyenneHumidite = 0;
}
}
 }


Voilà, j'espère que j'ai donné assez d'informations pour que vous m'aidiez

Merci


Ju!
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
Ceci n'est pas du code natif mais du .NET (de l'interprété profond), il convient de l'indiquer dans la question.

Je passe mon chemin.

ciao...
BruNews, MVP VC++
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Merci beaucoup pour cette information. Comme je le disait dans le message précédent, je ne sais pas où trouver cette information et je ne suis pas informaticien.


Ju!
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
où est le code où tu dois récupérer le texte afin que je puisse te donner un coup de main.

louis
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Rebonjour,
selon ton besoin il faut utiliser :
type_voulu = type_voulu.Parse(Ma_TextBox.Text);
avec type_voulu : int, decimal, double en fonction de ton besoin et Ma_text_box le nom de la textbox dont tu veux récupérer la valeur.
Tu peux aussi utiliser TryParse si tu n'es pas trop sûr de la string dans ta textbox.
Cherche de l'aide sur MSDN ou internet pour es mot-clés de .NET : Parse, TryParse.


louis
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Bonjour,

Voilà l'endroit dans lequel j'aimerais intégrer la valeur de ma textbox. La valeur sera en fait une altitude et pour l'instant, je fais mon calcul avec une valeur fixe (ici 430). La valeur de la textbox remplacerait donc les valeurs 430 * 430.

if(checkBoxPression->Checked)	// Si checkBox activée
{
        valeurPressionCapteur = InputPacketBuffer[1];	// Valeur de la pression sur 8 bits
        valeurPressionCapteurFloat = (((float)valeurPressionCapteur / 255 + 0.095) / 0.0009) + 1.5;
valeurAltitudeCarre = 430 * 430;
valeurPressionFloat = -.000004829 * (int)valeurAltitudeCarre + 0.119 * 430 + valeurPressionCapteurFloat;
}


Voici les informations liées à la textbox:

// 
// textBoxAltitude
// 
this->textBoxAltitude->Location = System::Drawing::Point(146, 43);
this->textBoxAltitude->Name = L"textBoxAltitude";
this->textBoxAltitude->Size = System::Drawing::Size(100, 20);
this->textBoxAltitude->TabIndex = 30;


Je ne sais pas si cela est suffisant pour m'aider, mais je reste évidement à disposition pour d'autres informations.

Merci beaucoup!!!



Ju!
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjout,
Dans ce cas il te faut cela :
int valeurAltitude = int.TryParse(this->textBoxAltitude.Text);
et valeurAltitude contiendra ta valeur.
Pour un double:
double valeurAltitude = double.TryParse(this->textBoxAltitude.Text);
Bon codage.

louis
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Statut
Membre
Dernière intervention
4 septembre 2014

Merci Louis14. J'ai essayer ta solution, mais j'ai une erreur lors de la compilation. La voici:

error C2062: type 'int' unexpected

Et voilà comment j'ai modifié mon code:

if(checkBoxPression->Checked)	// Si checkBox activée
{
int valeurAltitude = int.TryParse(this->textBoxAltitude.Text);
valeurPressionCapteur = InputPacketBuffer[1];	// Valeur de la pression sur 8 bits
valeurPressionCapteurFloat = (((float)valeurPressionCapteur / 255 + 0.095) / 0.0009) + 1.5;
valeurAltitudeCarre = 430 * 430;
valeurPressionFloat = -.000004829 * (int)valeurAltitudeCarre + 0.119 * 430 + valeurPressionCapteurFloat;
}


Apparement, c'est le int de int.TryParse qu'il n'aime pas, mais si je l'enlève, c'est une autre erreur:

error C3861: 'TryParse': identifier not found

Je ne voit pas trop où je pourrais modifier quelque chose dans la fonction pour éliminer cette erreur...



Ju!