ScriptControl.

Iniciado por mdg, 23 Enero 2007, 05:48 AM

0 Miembros y 1 Visitante están viendo este tema.

mdg

Buenas colegas.

De antemano mil gracias por su tiempo y por su ayuda

mi consulta es la siguiente, tengo un ejemplo que encontre en una web sobre como evaluar el resultado de una funcion, aqui la pego:

'Prueba 2 de ScriptControl
Dim sCodigo As String
Dim vValor As Variant

sCodigo = "Function Multiplica(a, b)" & vbCrLf & _
" Multiplica = a * b" & vbCrLf & _
"End Function"

'Añadimos el código, especificamos el lenguaje y ejecutamos
With ScriptControl1
.Language = "VBScript"
.AddCode sCodigo

'Usamos Run para obtener el resultado
'vValor = .Run("Multiplica", "2", "5")

'Usando Eval, nos permite que la expresión esté en
'una variable... además de hacerlo directamente,
'pero se usa de la misma forma que lo haríamos desde VB
vValor = .Eval("Multiplica(2,5)")

'Mostramos el valor devuelto
MsgBox "El valor devuelto es: " & vValor
End With


El asunto es que la funcion esta encapsulada dentro de una variable como ven:

sCodigo = "Function Multiplica(a, b)" & vbCrLf & _
" Multiplica = a * b" & vbCrLf & _
"End Function"

Pero como puedo evaluar el resultado de una funcion cualquiera que se encuentra en otro modulo como ser

Function Valor()
Valor=10
End Function

Pero sin declararla ni meterla dentro del procedimiento que la evalua ni con las "", no se si soy lo suficientemente claro , de todas maneras gracias por todo.

Sancho.Mazorka

Man el ScriptControl1 es un OCX o que es ? y no pudes agregar en una variable una operacion de este modo :
Valor = "suma 5+10"

Por favor cuando postees codigo usa la el boton de codigo asi es mas facil leer la programacion ;)

Disculpa que no te pueda ayudar  :(

Sancho.Mazorka  :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



mdg

Hola!

Si, es una ocx, msscript.ocx y no, y no, no me sirve:

valor="suma +10+20"

Sino:
valor=suma(10,10) + 10+10

No se si me explico.

Pd.: Cual es el boton de codigo?, perdon..

CeLaYa

#3
Intente correr el código pero me da error  :huh:

"Error '308' en tiempo de ejecución"
"A script engine for the spceified languaje can not be created"

y a tu pregunta, para poder usar funciones que esten en otros módulos declaralas como "Public", de esa manera las podrás usar...

En un módulo

Public Function Sumar(a as integer, b as integer) as Integer
       sumar = a + b
end function


y desde cualquier parte de tu proyecto


dim z as integer
z = sumar(5,9)
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

mdg

Hola y gracias por tu respuesta, es que el problema lo tengo para que lo ejecute el scriptcontrol, como lo hago?, gracias.