Erreur dans l'addition

Résolu
Messages postés
83
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
19 mai 2011
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour
j'ai fait un petit Programme en me servant de l'objet class j'ai une erreur au niveau de l'addition au lieu d'additionner
le résultat est exemple 3+3 = 66
je vous mets le code je sais pour certain c'est du code enfantin

'Module-level variables to hold property values:
Private mVal1
Private mVal2


Public Function Multiplication()
    Multiplication = mVal1 * mVal2
End Function


Public Function Division()
    If mVal2 <> 0 Then
        Division = mVal1 / mVal2
    Else
        Division = "Undefined"
    End If
End Function
Public Function Addition()


Addition = mVal1 + mVal2
End Function


Public Function Soustraction()
Soustraction = mVal1 - mVal2
End Function


Public Property Let Value1(Setting)
    ' Store setting in module-level variable.
    mVal1 = Setting
End Property


Public Property Let Value2(Setting)
    ' Store setting in module-level variable.
    mVal2 = Setting
End Property


Public Function Hypotenuse()
    'Calculate the hypotenuse of a right-angled
    'triangle (the side opposite the right side).
    Hypotenuse = Sqr((mVal1 ^ 2) + (mVal2 ^ 2))
End Function

 
dédé[8D]

12 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Doublon corrigé ;)

Type tes variables, tu auras bien moins de surprises !!!

'Module-level variables to hold property values:
Private mVal1 As Double
Private mVal2 As DoublePublic Function Multiplication() As Double
    Multiplication = mVal1 * mVal2
End Function

Public Function Division()  As Double
    If mVal2 <> 0 Then
        Division = mVal1 / mVal2
    Else
        Division = "Undefined"
    End If
End Function
Public Function Addition() As Double

Addition = mVal1 + mVal2
End Function

Public Function Soustraction() As Double
Soustraction = mVal1 - mVal2
End Function

Public Property Let Value1( Byval Setting As Double)
    ' Store setting in module-level variable.
    mVal1 = Setting
End Property

Public Property Let Value2(Byval Setting As Double)
    ' Store setting in module-level variable.
    mVal2 = Setting
End Property

Public Function Hypotenuse() As Double
    'Calculate the hypotenuse of a right-angled
    'triangle (the side opposite the right side).
    Hypotenuse = Sqr((mVal1 ^ 2) + (mVal2 ^ 2))
End Function

Et après on voit partout que le vb6 est lent, tsssss
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Alors cà c'est quand même la meilleure ;)

Je te donne la solution toute faite ! Tu as lu mon post ?

J'ai mis en gras ce qu'il fallait modifier dans ton code pour que ca marche.

Mais sinon, quel est l'intérêt de passer par une classe pour faire des opérations aussi basique ???
Messages postés
22
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
13 septembre 2006

ça chauffe par là !!!
essaye de mettre les variable dans des champs 'text'  et  mets Val avant : val(text1.text) + val (text2.text)
ça marche pour moi ( enfin si tu peux le faire)
Messages postés
83
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
19 mai 2011

merci pour votre réponse les gars  j'avais pas fait gaffe n'empéche que si faut tortiller du croupion pour faire bouger certain  alors pourquoi pas, je dis bouger du croupion et  faite la dance des canards et peut être que on viendra vous aidez encore plus vite
regarder on ma repondu coup sur coup j'ai vraiment de la chance la prochaine fois je ferai la danse du ventre ou la danse du bohubohu

dédé[8D]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Pense au moins a appuye sur reponse acceptee sur le ou les posts qui ont pu t'aider.
Si tu l'as fait pendant l'ecriture de ce message excuse moi

@+, Julien
Pensez:
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Bah excuse moi ....

@+, Julien
Pensez:
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Est tu sur que dans ton exemple le résultat ne serait pas plutot 33 ?
Il faudrait donner plus de precisions
d'ou viennent les 3
a quel moment affectes tu une valeur a mval1 et mVal2

NOTE: Si au moment de l'addition les 3 on ete pris dans un textbox , c'est normal que ton resultat soit erroné car l'addition fait une concatenation si mVal1 et mVal2 sont des chaine de caracteres.
je ne sais pas si je suis clair,
@+, Julien
Pensez: Règlement/STRONG>
Messages postés
83
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
19 mai 2011

Pardon
tu as raison le résultat eest bien 33 mais comment faire pour que le résultat soit bon

dédé[8D]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,


Pour que le resultat soit bon, tu dois suivre le conseil de  DARKSIDIOUS 

@+, Julien
Pensez: Règlement/STRONG>
Messages postés
83
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
19 mai 2011

je le sais qua ça fait une concatenation mais comment contourner ça je veus bien suivre le conseil de  Darksidious mais au moins mettai moi sur le chemin de la réponse si vous voulez pas me donner la solution

dédé[8D]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re
> andregoub: Que dire... prends la peine de lire les réponses que l'on te propose, test les cela t'éviteras de dire : "mais au moins mettai moi sur le chemin de la réponse si vous voulez pas me donner la solution"

@+, Julien
Pensez: Règlement/STRONG>
Messages postés
437
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
10 août 2010
2
Pas besoin de tortiller du croupion, DS t'as donné la solution, voici l'explication :

Tu ne types pas tes variables, donc ce sont des variants.
Les valeurs saisies au clavier et récupérées dans les propriétés .Text sont de type String
Quand tu utilises l'opérateur + entre deux variables de type String, VB réalise une concaténation.

Le type de sortie n'étant pas typé, il te retourne le résultat de l'opérateur + avec tes deux variables de type Variant:String, donc la concaténation des variables.

Soit tu force le typage des variables dans ton module de classe, soit tu types les variables quand tu les stockes dans ta classe.