Resumen Ejecutar script desde VB   (2 mensajes )

Mensaje enviado por Diego_Buendía <diegobb@teleline.es>

Hola, Fernando: Existe en VB un poco conocido control llamado ScriptControl, el cual te permite meter código de VBScript dentro de un programa VB. Digamos que su función es insertar código en tiempo de ejecución y, naturalmente, ejecutarlo.

Te envío una dirección interesante donde se introduce dicho control:
http://msdn.microsoft.com/library/periodic/period99/script.htm

Aquí encontrarás algunos ejemplos interesantes; por ejemplo, para escribir una calculadora en una sola línea se puede hacer lo siguiente:

'Nota: marcar la referencia Microsoft Scripting Control
'en Proyectos - Referencias
Private Sub Command1_Click()
  Dim SC As New ScriptControl
  SC.Language = "VBScript"
  MsgBox SC.Eval(InputBox("Expresión:", "Calculadora Barata"))
End Sub

Si pruebas esto, verás que puedes evaluar cualquier expresión aritmética bien
formada desde la propia cadena de texto que introduces, lo que representa una comodidad bestial si lo comparas con un evaluador de expresiones 'hecho a mano'. Pero, con todo, aquí todavía no estás compartiendo un código entre el control de script y el programa. Lo que a uno le gustaría (introducir 'A' en la InputBox y que saliera su contenido evaluado en la MsgBox) no es posible directamente, lo que no quiere decir que no se pueda.
En realidad es posible si defines una clase como

'Clase MiClase.cls
Public A As Integer

Entonces puedes ir al formulario, poner un botón, marcar en Proyecto - Referencias 'Microsoft Scripting Control' y verás que el siguiente código te funciona:

Private Sub Command1_Click()
  Dim SC As ScriptControl
  Dim MA As MiClase
  Dim v As String

  'Inicializar control Script
  Set SC = New ScriptControl
  SC.Language = "VBScript"
  'Inicializar la clase compartida
  Set MA = New MiClase
  'Compartir la clase propiamente dicha
  SC.AddObject "MA", MA, True
  '======== LO QUE PIDES ============
  'A = 50 'En Clipper
  MA.A = 50 'En VB

 'v = " a + 100 + int( a / 3 )" 'En Clipper
  v = " a + 100 + int( a / 3 )"

 '? &v --> 166 'En Clipper
  MsgBox SC.Eval(v)
End Sub

Como puedes ver, se necesita 'algo más' que en Clipper, pero el resultado es idéntico. La pena es tener que usar una clase para encapsular las variables que quieres compartir, pero bueno, ahí decidirás tu si te conviene esta complejidad extra o mejor te buscas otras alternativas.

Un saludo, Diego Buendía
Barcelona, Spain
diegobb@teleline.es
http://teleline.terra.es/personal/diegobb

Mensaje enviado por "Italo Cafferata R." <ICR@rema.com.pe>

Holas:

Me llego este mensaje, yo no lo he probado, pero lo mando pues me parece que alguien en algun momento preguntaba por algo parecido a las macros, quizas esto sirva.

Saludos,


Evaluate string formulas in VB

If you've come to Visual Basic from Microsoft Access, you probably miss the handy Eval() method. This method evaluates a supplied string as though it were code. As a result, you could easily evaluate mathematical expressions passed as a string, like so:

iResult = Eval("(2 * 3) + 5)")

which fills iResult with the value 11.

To achieve this same functionality in Visual Basic, you've no doubt resorted to complicated string parsing functions. Or perhaps you added Access' DLL to your project, which may have seemed like an awful lot of DLL for such a simple method.

Now, though, you'll be happy to know that you can use the Eval() method without a lot of overhead. Microsoft provides this functionality in its Script Control. This very lightweight ActiveX component is available so you can add end-user scripting ability
to your applications.
However, as a result, it also comes with an Eval method. Adding this component to your project provides very little overhead and gives you the ability to evaluate mathematical strings.

To download this OCX, visit http://msdn.microsoft.com/scripting/

Select the Script Control link, then follow the Download instructions. The following code shows the simple VB we added to a command button's click event. The SC1 script control evaluates a mathematical formula in the txtFormula textbox.

Private Sub Command1_Click()
MsgBox txtFormula & " = " & SC1.Eval(txtFormula)
End Sub



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com