cs_souma86
Messages postés15Date d'inscriptiondimanche 12 octobre 2008StatutMembreDernière intervention28 novembre 2011
-
20 mars 2009 à 18:39
cs_souma86
Messages postés15Date d'inscriptiondimanche 12 octobre 2008StatutMembreDernière intervention28 novembre 2011
-
21 mars 2009 à 21:19
J'ai un projet à travailler avec le vb.net.
Dans mon code, l'utilisateur doit avoir la possibiliter d'entrer une expression dans un textbox (chaine) exemple "2*x+5". le programme doit evaluer cette expression en une commande à exécuté.
je doit convertir cette chaine afin de la calculer.
Mon probleme est l'evaluation de cette expression.
j'ai essayer d'utiliser la fonction eval() mais vb.net ne l'accepte pas!!
j'utilise ce code:
**************************************************************************
Public Function ExecuteCommand(ByVal cmd As String) As String
Dim vbCodeProv As VBCodeProvider = New VBCodeProvider
Dim cParam As CodeDom.Compiler.CompilerParameters = New CodeDom.Compiler.CompilerParameters
' Ajout des références
cParam.ReferencedAssemblies.Add("System.dll")
' Options du compilateur
cParam.CompilerOptions = "/t:library" 'L'assembly est une bibliothèque de classe,
cParam.GenerateInMemory = True 'générée uniquement en mémoire.
' Génération du code source
Dim sCode As System.Text.StringBuilder = New System.Text.StringBuilder("")
sCode.AppendLine(cmd)
'Résultat de la compilation
Dim cResult As CodeDom.Compiler.CompilerResults = vbCodeProv.CompileAssemblyFromSource(cParam, sCode.ToString())
If cResult.Errors.Count > 0 Then
Dim Errors As String = "Erreur(s) : "
For Each ce As CodeDom.Compiler.CompilerError In cResult.Errors
Errors &= vbCrLf & ce.ErrorText
Next ce
MsgBox(Errors)
Return Nothing
Else
' Récupération de l'assembly généré
Dim myAssembly As System.Reflection.Assembly = cResult.CompiledAssembly
' Instanciation de EvalVbCode
Dim oEvalVbCode As Object = myAssembly.CreateInstance("Divad.EvalVbCode")
' Récupération du type de EvalVbCode
Dim tEvalVbCode As Type = oEvalVbCode.GetType()
' Récupération de la méthode EvalTransformation
Dim methodEvalTrans As Reflection.MethodInfo = tEvalVbCode.GetMethod("EvalTransformation")
' Invocation de la méthode EvalTransformation
cmd = methodEvalTrans.Invoke(oEvalVbCode, New Object() {cmd})
Return cmd
End If
End Function
**************************************************************************
A l'exécution il m'affiche cette erreur :Labels are not valid outside methodes.
j'ai supprimé l'objet Image car je n'ai pas besoin de l'utilisé.