Visual Basic - Solo Expertos... Evaluar Dificil

Life is soft - evento anual de software empresarial
 
Vista:

Solo Expertos... Evaluar Dificil

Publicado por Carlos E. Garcia Cruz (54 intervenciones) el 22/08/2003 21:20:26
mi problema es al hacer un eval
tengo la sintaxis :
IF 0 >9 THEN 9*(44.32/8)*2 ELSE 0*(44.32/8)*2 END IF
pero para poder analizarla con eval tengo que convertirla asi:
IF 1 >9 THEN X= 9*(44.32/8)*2 ELSE X= 0*(44.32/8)*2 END IF

para que pueda funcionar el siguiente codigo:

Set sc = CreateObject("ScriptControl")
sc.Language = "VBScript"
A_Cadena = PCadena
A_TmpEval = ""
A_AntPos = 0
If InStr(A_Cadena, "IF") <> 0 Then
Set m = sc.Modules.Add("Module1")
m.AddCode "Private X"
m.AddCode A_Cadena
m.ExecuteStatement A_Cadena
L_Nom_Valor = m.eval("X")
Else

L_Nom_Valor = sc.eval(PCadena)
End If
Set sc = Nothing
Exit Function

el problema es saber si se puede evaluar la cadena sin tener que
ponerle X=, ya que las cadenas pueden variar muchisimo

En eso estoy atorado..

muchas gracias por sus respuestas..

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Solo Expertos... Evaluar Dificil

Publicado por Cecilia Colalongo (3116 intervenciones) el 23/08/2003 15:58:10
Fijate con esto, a mi me funciona sin problemas:

Dim pCadena As String

pCadena = "IF 0 >9 THEN 9*(44.32/8)*2 ELSE 0*(44.32/8)*2 END IF"

If InStr(1, pCadena, "IF") Then
pCadena = Replace(pCadena, "END IF", ")")
pCadena = Replace(pCadena, "ELSE", ",")
pCadena = Replace(pCadena, "THEN", ",")
pCadena = Replace(pCadena, "IF ", "IIF(")
pCadena = Replace(pCadena, " ", "")
End If

Debug.Print pCadena

With ScriptControl1
.AddCode "Public Function IIf(Eval,Expr1,Expr2)" & vbCrLf & _
"If Eval Then IIf=Expr1 Else IIf=Expr2 End If" & vbCrLf & _
"End Function"

Debug.Print .Eval(pCadena)
End With
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar