Convertion string (calcul) en integer

Fermé
Signaler
-
 breeff -
Bonjour,
Je suis en train de faire une calculette en VB.
Mon problème est simple:
je souhaite transformer le contenu de la textbox (string) pour que cela affiche le résultat du calcul.
J'ai essayé la fonction CInt sauf qu'elle ne marche pas car il ne sait pas convertir les opérateur + / * - .
Voici le code:

Dim nb As Integer
Dim carac As String
Dim res As String


'retourne le nombre de caractère dans la textbox
nb = RtbRes.TextLength
'boucle parcourant chaque caractère de la textBox
For i As Integer = 1 To nb
'extrait le caractère ayant pour pointeur i
carac = Mid(RtbRes.Text, i, 1)
res = res + carac
Next
res = CInt(res)
MsgBox(res)

4 réponses

Messages postés
666
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
Bonjour,

Ton code contient des erreurs. Et globalement il n'as pas de sens. On va le voir pas à pas :

> Dim nb As Integer
> Dim carac As String
> Dim res As String


> nb = RtbRes.TextLength

> For i As Integer = 1 To nb 'tu parcours tout le texte
> carac = Mid(RtbRes.Text, i, 1) 'tu extrait le caractère n° i
> res = res + carac 'les caractères que tu lit sont mis dans res
> Next 'à la fin, c'est comme si tu copiais le texte de RtbRes dans res Tu peux tout simplement remplacer tout ça par res = RtbRes.text
> res = CInt(res) 'Là il y a incompatibilité du type, res est String et CInt est Integer et ne converti que les entiers
> MsgBox(res)

Il va falloir réviser ton code. Mettre des conditions pour que seuls les chiffres soient copiés par exemple, et surtout, bien poser la problématique. Qu'est ce que tu veux entrer et qu'est ce que tu veux avoir en sortie.

Bon courage!
0
Merci de ta réponse
oui effectivement y'a du travail pour moi ^^
D'un autre coté c'est la première fois que je me lance dans le VB.net

Concernant la boucle en faite j'ai simplement oublié de la retiré (elle me servait lorsque je faisais divers test) et effectivement, il suffit juste de reprendre le contenu de la textbox.
Pour faire extrêmement simple, la textbox contient le calcul.
Je prends pour exemple 2+4.
Celui ci est du type string. Ce que je souhaite, c'est de pouvoir insérer le résultat du calcul dans une variable.(autrement dit 6 et pas "2+4")

Je remet le code plus propre:

Dim nb As Integer
Dim res As String


res = RtbRes.text

MsgBox(res)



(Effectivement c'est plus léger )
0
Messages postés
666
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
Bonjour

J'ai essayé de faire un programme pour approcher ce que tu cherches. J'ai fini par trouver un schéma de principe :

L'exemple suivant est fait sur une feuille simple (frmUser) contenant
- un texte : txtEq
- un bouton : cmdCalc
- un label : lblRes
Il permet de calculer des sommes et des différences. Par exemple "1+3" ou "-3+5-4+10-15"


Private Sub cmdCalc_Click()
....Dim v1, v2 As Integer
....Dim op As Integer
....Dim c As String
....
....op = 1
....For i = 1 To txtEq.TextLength
........c = Mid(txtEq.Text, i, 1)
........If IsNumeric(c) Then
............v1 = CInt(CStr(v1) & c)
........ElseIf c = "+" Then
............v2 = v2 + op * v1
............op = 1
............v1 = 0
........ElseIf c = "-" Then
............v2 = v2 + op * v1
............op = -1
............v1 = 0
........End If
....Next
....v2 = v2 + op * v1
....lblRes.Caption = v2
End Sub



Pour prendre en compte le reste des opérateurs et les parenthèses, il va falloir utiliser un niveau plus élevé d'intelligence artificielle et bien structurer le code pour ne pas s'y perdre.
0
Merci beaucoup je vais prendre ton code comme base et essayer de le compléter pour qu'il prenne en compte les parenthèses et autre. Ce sera déjà un début!
Encore merci
0