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

Como puedo ejecutar instruciones en un string

Estas en el tema de Como puedo ejecutar instruciones en un string en el foro de Visual Basic clásico en Foros del Web. Soy nuevo participante en este foro , pero he leido bastante los temas incluidos por lo que propongo la siguiente duda a la cul en ...
  #1 (permalink)  
Antiguo 13/06/2005, 15:17
 
Fecha de Ingreso: junio-2005
Mensajes: 7
Antigüedad: 18 años, 10 meses
Puntos: 0
Como puedo ejecutar instruciones en un string

Soy nuevo participante en este foro , pero he leido bastante los temas incluidos por lo que propongo la siguiente duda a la cul en distintos forros no he tenido respuesta , o bien no planteo adecuadamente la pregunta o no es posible hacerlo .

:

Tengo la necesidad que desde un archivo de texto (por ejemplo un INI)
leer encabezados y datos y asignarlos a un tipo de datos de usuario , pero no he encontrado algo donde pueda asignar a

las variables de usuario los datos del archivo . probablemente no me doy a entender bien por lo que pongo los ejemplos

:

Datos del archivo ini

[LOCALIDADES]
DATOS=\\SERVIDOR\CARPETA1
IMAGENES=\\SERVIDOR\CARPETA2
SUCURSAL=04
USUARIO=cVENTAS
ETC...

[OPTIONS]
LETRA=1
SECUENCIA=0
ETC...

Declaracion de tipos :

Public type LOCALIDADES
DATOS as String
IMAGENES as String
SUCURSAL as String
USUARIO as String
end type

Public type OPTIONS
LETRA as Integer
SECUENCIA as Integer
end type

Lo que no encuentro como funcione es lo siguiente :

(funciones API para leer INI - esto esta claro y los dim)

grupo ="LOCALIDADES"

Set Tcontenidos = IniGetSection(PATH + "\" + App.EXEName + ".ini", grupo)

For i = 1 To Tcontenidos.Count Step 2
sclave = Tcontenidos(i)
svalor = Tcontenidos(i + 1)
StrCodigo = Grupo & "." & sclave & "=" & Chr(34) & svalor & Chr(34)

...........

Ahora como le hago para que lo que esta en StrCodigo se ejecute como parte del codigo ?

  #2 (permalink)  
Antiguo 13/06/2005, 15:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por e1_rg
Soy nuevo participante en este foro , pero he leido bastante los temas incluidos por lo que propongo la siguiente duda a la cul en distintos forros no he tenido respuesta , o bien no planteo adecuadamente la pregunta o no es posible hacerlo .

:

Tengo la necesidad que desde un archivo de texto (por ejemplo un INI)
leer encabezados y datos y asignarlos a un tipo de datos de usuario , pero no he encontrado algo donde pueda asignar a

las variables de usuario los datos del archivo . probablemente no me doy a entender bien por lo que pongo los ejemplos

:

Datos del archivo ini

[LOCALIDADES]
DATOS=\\SERVIDOR\CARPETA1
IMAGENES=\\SERVIDOR\CARPETA2
SUCURSAL=04
USUARIO=cVENTAS
ETC...

[OPTIONS]
LETRA=1
SECUENCIA=0
ETC...

Declaracion de tipos :

Public type LOCALIDADES
DATOS as String
IMAGENES as String
SUCURSAL as String
USUARIO as String
end type

Public type OPTIONS
LETRA as Integer
SECUENCIA as Integer
end type

Lo que no encuentro como funcione es lo siguiente :

(funciones API para leer INI - esto esta claro y los dim)

grupo ="LOCALIDADES"

Set Tcontenidos = IniGetSection(PATH + "\" + App.EXEName + ".ini", grupo)

For i = 1 To Tcontenidos.Count Step 2
sclave = Tcontenidos(i)
svalor = Tcontenidos(i + 1)
StrCodigo = Grupo & "." & sclave & "=" & Chr(34) & svalor & Chr(34)

...........

Ahora como le hago para que lo que esta en StrCodigo se ejecute como parte del codigo ?

Usa el Microsoft Script Control
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 13/06/2005, 15:24
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
seria algo asi..
Código:
' Put quotes around a string and double any embedded Chr$(34)
' Codigo hecho por Francesco Balena
' convert all control characters into embedded VB constants
' or CHR() functions
'
' This function is useful, for example, when you are writing a MsgBox wizard.
' Tipically, such a wizard would let the user enter a string in a multiline
' textbox control, and would later have to convert it into a quoted string in
' order to produce the actual MsgBox code. Just putting quotes around the
' string doesn't work, because you have to account for embedded quotes and
' control characters.

Function StringToCode(ByVal Source As String) As String

    Dim Index As Integer
    Dim acode As Integer
    Dim result As String
    Dim openQuotes As Boolean
    
    For Index = 1 To Len(Source)
        acode = Asc(Mid(Source, Index, 1))
        If acode >= 32 Then
            If openQuotes = False Then
                result = result & """"
                openQuotes = True
            End If
            result = result & Chr(acode)
            ' double embedded quotes
            If acode = 34 Then result = result & Chr(acode)
        Else
            If openQuotes Then
                result = result & """ & "
                openQuotes = False
            End If
            Select Case acode
            Case 0
                result = result & "vbNullChar & "
            Case 13
                result = result & "vbCr & "
            Case 10
                result = result & "vbLf & "
            Case 9
                result = result & "vbTab & "
            Case Else
                result = result & "Chr$(" & CStr(acode) & ") & "
            End Select
        End If
    Next
    
    ' close open quotes
    If openQuotes Then
        result = result & """"
    ElseIf Right(result, 3) = " & " Then
        result = Left(result, Len(result) - 3)
    End If
    
    ' convert CR+LF to a single symbolic constant
    Do
        Index = InStr(result, "vbCr & vbLf")
        If Index = 0 Then Exit Do
        result = Left$(result, Index - 1) & "vbCrLf" & Mid$(result, Index + 11)
    Loop
    
    ' empty string is a special case
    If Len(result) = 0 Then result = """"""
    
    StringToCode = result
    
End Function
esta con todo y creditos los cuales se los agregue porque no estaba originalmente en el codigo.

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #4 (permalink)  
Antiguo 13/06/2005, 16:12
 
Fecha de Ingreso: junio-2005
Mensajes: 7
Antigüedad: 18 años, 10 meses
Puntos: 0
With scrip
.AddCode StrCodigo
.Run "Asigna_variable"
End With


Si David el grande se refiere a esto no puedo hacer que funcione , ya lo intente con

.ExecuteStatement StrCodigo

y tampoco , ya estan las referencias al scipt control y lo declaro asi :

Dim scrip As ScriptControl

y menos , cual es el problema ?

y GeoAvila , los tiros no andan por ahi..... Sorry
  #5 (permalink)  
Antiguo 14/06/2005, 12:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Cita:
Iniciado por e1_rg
With scrip
.AddCode StrCodigo
.Run "Asigna_variable"
End With


Si David el grande se refiere a esto no puedo hacer que funcione , ya lo intente con

.ExecuteStatement StrCodigo

y tampoco , ya estan las referencias al scipt control y lo declaro asi :

Dim scrip As ScriptControl

y menos , cual es el problema ?

y GeoAvila , los tiros no andan por ahi..... Sorry
Para que te funcione el ScriptControl deberás hacer referencia a todas las variables y controles que usas para ejecutar ese código, así cuando le hagas AddCode él ya te ejecuta...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 15/06/2005, 08:36
 
Fecha de Ingreso: junio-2005
Mensajes: 7
Antigüedad: 18 años, 10 meses
Puntos: 0
Ya esta declarada con un dim

anoto :
Grupo = "LOC" , sclave ="Rtimg" y svalor="c:\img"

StrCodigo = "Sub Asigna " & vbCrLf & "DIM LOC " & vbCrLf & _
Grupo & "." & sclave & "=" & Chr(34) & svalor & Chr(34) & _
vbCrLf & "End Sub"
Set scrip = CreateObject("ScriptControl")

With scrip
.Language = "VBScript"
.ExecuteStatement StrCodigo
End With

Deacuerdo pero ya no genera el error , pero como me suponia LOC.Rtimg no contiene nada ...... .

Esto ya me produce una neurosis , he leido todo acerca de ScriptControl y antes de recurir a este foro ya tenia una semana de estar en esto , por mucho tiempo atras he trabajado con versiones de lenguajes de BASIS (bbx3, bbx4, pro5 y vpro5) , cada uno permite la instruccion EXECUTE A$ donde A$ contiene una instruccion la cual se ejecuta en toda la grandeza del lenguaje , pregunto , VB no tendra algun API , PATI o como demonios se llame , para hacer algo similar
  #7 (permalink)  
Antiguo 15/06/2005, 10:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Bueno, ahora mismo no sé como hacerlo con una API, pero lo que puedes hacer es seleccinar el caso de objeto, seleccinar el caso de lugar y asignar el valor correspondiente....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 15/06/2005, 10:57
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Mensaje

La Idea que me surgió:
Esta es mi idea, no sé si te va a servir:
Código:
Private ActualRtmg As String
Public Property Let Rtimg(ByVal m_newImg As String)
ActualRtmg = m_newImg
End Property
Public Property Get Rtimg() As String
Rtimg = ActualRtmg
End Property
Colocar Eso en las Declaraciones del Form
Y este código:
Código:
Private Sub Form_Load()
Grupo = "LOC"
sclave = "Rtimg"
svalor = "c:\img"
StrCodigo = Grupo & "." & sclave & "=" & Chr(34) & svalor & Chr(34)
Set scrip = CreateObject("ScriptControl")
With scrip
.Language = "VBScript"
.addobject "LOC", Me, True
.ExecuteStatement StrCodigo
End With
End Sub
No te devolverá en la Variable por supuesto, pero te devolverá en la Propiedad del Form Especificada en sclave....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 15/06/2005, 16:36
 
Fecha de Ingreso: junio-2005
Mensajes: 7
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias por darme pelota (Esto poner atencion en tiquicia)

Bueno, lo que me suguieres el caso objeto y caso lugar no lo entiendo muy bien , y el codigo no lo he probado pero segun veo podria funcionar para ese unico caso o variables , pero la idea era esta :

Tengo en un archivo INI el encabezado y los valores (varios ) defino una variable compuesta con Type y sus nombres de elementos a usar serian los mismos de las etiquetas en el INI ,

[TIPO1]
dato1=xxxxx
dato2=www
etc....

en ese momento me parecio logico no usar indices , ya que los nombres de los Tipos estaban ahi ademas del nombre del elemeno y su valor , me dije , bueno una rutina que lo haga automatico , entonces deberia quedar asi (segun mi entender, que no lo es tanto al parecer ) :

TIPO1.dato1 ="xxxx"
etc....

Por lo que al usar las variables y sus elementos ya tendrian el valor del archivo ini , bueno me queda de experiencia que esto NO SE PUEDE HACER , sin embargo debe de poderse (al estilo de Galileo , ' y sin embargo se mueve')

Gracias y Salu2.....
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 06:27.