Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: mdg en 23 Enero 2007, 05:48 AM

Título: ScriptControl.
Publicado por: mdg en 23 Enero 2007, 05:48 AM
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.
Título: Re: ScriptControl.
Publicado por: Sancho.Mazorka en 23 Enero 2007, 08:37 AM
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
Título: Re: ScriptControl.
Publicado por: mdg en 23 Enero 2007, 15:00 PM
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..
Título: Re: ScriptControl.
Publicado por: CeLaYa en 23 Enero 2007, 21:36 PM
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)
Título: Re: ScriptControl.
Publicado por: mdg en 24 Enero 2007, 01:36 AM
Hola y gracias por tu respuesta, es que el problema lo tengo para que lo ejecute el scriptcontrol, como lo hago?, gracias.