VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Stockez vos formules de calcul dans une base de donn¨es et non plus dans votre code. Cela vous perm

by David SERROR (2 Submissions)
Category: String Manipulation
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Fri 25th October 2002
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Stockez vos formules de calcul dans une base de donn¨es et non plus dans votre code. Cela vous permet de changer vos formules sans recompiler

API Declarations


Public fonction as string '(fonction est la formule que vous souhaitez calculer)

Rate Stockez vos formules de calcul dans une base de donn¨es et non plus dans votre code. Cela vous perm



'ceci est une fonction récursive, elle s'appelle automatiquement jusqu'à ce que
'le calcul qui lui est demandé soit une opération simple entre deux nombres.

' Ces variables ne doivent pas être déclarées public car elles ont une valeur
' différente à chaque appèle de la fonction.
Dim nbre1 As Double
Dim nbre2 As Double

Dim position As Integer
Dim nb_parenthese As Integer

Dim caractere As String
Dim operateur As String
Dim reste As String

' position correspond à la position du caractère en cours de traitement dans la
' formule
position = 1
' caractere correspond au caractere en cours de traitement
caractere = Mid(fonction, position, 1)
' test pour savoir si fonction correspond au résultat final
Do While Not IsNumeric(fonction)
    If caractere = "(" Then
'      quelque soit la formule, il faut gérer la priorité des parentheses. Pour
'      se faire, on compte le nombre de parentheses ouvertes, et on cherche celle
'      qui ferme la première. On obtient un calcul que l'on traite, pouvant
'      contenir des sous-niveaux de parentheses et ainsi de suite....
        nb_parenthese = 1
        Do While nb_parenthese <> 0
            position = position + 1
            caractere = Mid(fonction, position, 1)
            Select Case caractere
                Case Is = "("
                    nb_parenthese = nb_parenthese + 1
                Case Is = ")"
                    nb_parenthese = nb_parenthese - 1
            End Select
        Loop
'      avant de commencer le calcul contenu entre parentheses, il faut garder
'      dans une variable le reste de la formule(après la parenthese fermante)
        reste = Mid(fonction, position + 1, Len(fonction))
'      on peut procéder alors au calcul du contenu entre parentheses.
        fonction = Mid(fonction, 2, position - 2)
        Call calc2N(fonction)
'      on concatène le resultat du calcul avec la fin de la formule
        fonction = fonction & reste
    End If
'   Quand le premier caractère n'est pas ou plus une parenthese, on peut
'   extraire le premier nombre et l'opérateur.
    fonction = Replace(fonction, ",", ".")
    nbre1 = Val(fonction)
    reste = Mid(fonction, Len(Trim(nbre1)) + 1, Len(fonction))
    fonction = nbre1 & reste
    operateur = Mid(fonction, Len(Trim(nbre1)) + 1, 1)
'   on cherche la position de l'opérateur dans la formule.
    position = InStr(1, fonction, operateur)
    reste = Mid(fonction, position + 1, Len(fonction))
'   si ce qui reste n'est pas un nombre, on le traite avant de continuer.
    If Not IsNumeric(reste) Then
        Call calc2N(reste)
    End If
'   le reste calculé, on fait l'opération correpondante à l'opérateur.
    reste = Replace(reste, ",", ".")
    nbre2 = Val(reste)
    Select Case operateur
        Case Is = "+"
            resultat = nbre1 + nbre2
        Case Is = "-"
            resultat = nbre1 - nbre2
        Case Is = "*"
            resultat = nbre1 * nbre2
        Case Is = "/"
            resultat = nbre1 / nbre2
    End Select
    fonction = Replace(fonction, ".", ",")
    fonction = resultat
Loop

End Function


Download this snippet    Add to My Saved Code

Stockez vos formules de calcul dans une base de donn¨es et non plus dans votre code. Cela vous perm Comments

No comments have been posted about Stockez vos formules de calcul dans une base de donn¨es et non plus dans votre code. Cela vous perm. Why not be the first to post a comment about Stockez vos formules de calcul dans une base de donn¨es et non plus dans votre code. Cela vous perm.

Post your comment

Subject:
Message:
0/1000 characters