Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Funcion para evaluar un String

Estas en el tema de Funcion para evaluar un String en el foro de Visual Basic clásico en Foros del Web. Alguien conoce si existe una funcion en Visual Basic que evalue una variable string como si fuera una linea de codigo o instruccion? Por ejemplo: ...
  #1 (permalink)  
Antiguo 30/03/2005, 21:35
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Funcion para evaluar un String

Alguien conoce si existe una funcion en Visual Basic que evalue una variable string como si fuera una linea de codigo o instruccion?

Por ejemplo:
Suponiendo que declaro una variable llamada "Instruccion" tipo String y en ella guardo el texto "Text1.Enabled = False".

La funcion que busco, recibiria como parametro la variable tipo String ("Instruccion") y me ejecutaria lo que esta contenga (en este caso deshabilitaria el Text1).

Espero que alguien me diga que si existe esta funcion.
  #2 (permalink)  
Antiguo 01/04/2005, 19:36
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
??????????
  #3 (permalink)  
Antiguo 01/04/2005, 20:48
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Iodem Asakura:
Usa una referencia a Microsoft Script Control.
Prueba esto:
En un formularion nuevo, agrega una referencia a Microsoft Script Control. Luego, inserta dos TextBox y un CommandButton. Agrega el siguiente código:
Código:
Option Explicit
Private m_scScriptCtrl As ScriptControl
 
Private Sub Command1_Click()
	executeInstruction Text1.Text
End Sub
 
Private Sub executeInstruction(instruction As String)
	m_scScriptCtrl.ExecuteStatement instruction
End Sub
 
Private Sub Form_Load()
	Set m_scScriptCtrl = New ScriptControl
	m_scScriptCtrl.Language = "VBScript"
	m_scScriptCtrl.AddObject "miForm", Me
End Sub
Ejecuta el programa. En el TextBox1, pon tu instrucción:
Código:
'Podrías usar esto:
miForm.Text2.Enabled = False
 
'Y podrías complicarlo un poco más
miForm.Text2.Enabled = Not miForm.Text2.Enabled
El control tiene otros métodos, que te permiten agregar nuevas funciones en tiempo de ejecución. Puedes agregarlo también como un control, pero yo prefiero usar una referencia.
En este foro he pegado algunos ejemplos con otros usos de este control (por si te interesa) sólo usa el buscador.

Saludos.
  #4 (permalink)  
Antiguo 02/04/2005, 05:34
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias, gracias, gracias, muuuuuuuuuuuchas gracias. Habia estado buscando esto hace mucho tiempo, voy a leer tus otros post.
  #5 (permalink)  
Antiguo 03/04/2005, 18:06
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Wow, cuanto trabajo he pasado con esto. No he podido hacer lo que quiero. Puedo hacer cosas que me devuelvan un valor con este control. Pero no puedo actuar sobre los controles que se encuntran en el form, ejecutando codigo desde el ScriptControl. Por ejemplo, tengo en un form dos textbox y un command button. Y el siguiente procedimiento

Private sub Command1_Click ()

scrControl.ExecuteStatement Text1

End sub

Si en el text1 pongo "text2.enabled = false", me da un error diciendo "Object required: 'Text2'"

Lo he intentado con el metodo Eval, Run (con sus respectivas especificaciones), y tengo el mismo error. Me podrias dar una ayuda en esto?
  #6 (permalink)  
Antiguo 03/04/2005, 20:55
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Iodem Asakura:
El control no encuentra los objetos automáticamente. De hecho, en el código que puse antes, tenía esta línea:
Código:
m_scScriptCtrl.AddObject "miForm", Me
Cuya finalidad es que el Script Control "encuentre" al formulario. Luego, cuando llamo al segundo TextBox, lo hago usando el nombre con el que ahora se identifica en el control (miForm).
Puedes hacer una de dos. Agrega sólo el formulario con el que vas a trabajar, y luego usa utiliza la notación de punto para indicar cada obejto del formulario o
agrégalos al cargar el formulario con For Each. Los segundo quizá sea más cómodo, pero probablemente consuma mayor cantidad de recursos. Para hacer esto, cambia la rutina Load del código que anteriormente había puesto por este:
Código:
Private Sub Form_Load()
Dim tmpCtrl As Control
	Set m_scScriptCtrl = New ScriptControl
	m_scScriptCtrl.Language = "VBScript"
	
	For Each tmpCtrl In Me
		m_scScriptCtrl.AddObject tmpCtrl.Name, tmpCtrl
	Next
End Sub
Después de esto, debes ser capaz de llamar a los controles por su nombre.

Saludos
  #7 (permalink)  
Antiguo 04/04/2005, 04:57
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Eso era lo que me faltaba , muchas gracias por tu ayuda
  #8 (permalink)  
Antiguo 05/04/2005, 21:01
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Se me habia olvidado preguntarte, porque cuando estaba probando tu codigo, haciendo referencia al control en vez de introducirlo desde el toolbar (Private m_scScriptCtrl As ScriptControl), me da un error, ahora mismo no me acuerdo en que parte, diciendo: "User-defined type not defined".
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:38.