[Solucionado] Cambiar una Variable String Desde una Funcion

Iniciado por agus0, 22 Enero 2011, 22:06 PM

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

agus0

Hola Foooro!!

Tengo una Pequeñisima Duda  :rolleyes:

Quiero Cambiar El "Contenido" de una Variable del Tipo String desde una Funcion... Hasta ahi parece Facil... Pero el Problema esta en que quiero pasarle a la Funcion el Nombre de la Variable...

Habia pensado en esto

Código (vb) [Seleccionar]
Private Sub ChgVar(ByVal vVar As Object, NewStr As String)
'On Error Resume Next
   vVar = NewStr
End Sub


Pero me devuelve:

"No Coinciden Los Tipos."

La Pregunta es Como que tengo que delcarar la variable vVar Para que Coincidan los Tipos

o Como Puedo Hacer una Funcion Que Realize eso...

Gracias!!

ignorantev1.1

Código (vb) [Seleccionar]

Sub chgVar(tVar As String, ByVal valor As String)
    tVar = valor
End Sub

Private Sub Form_Load()
    Dim Variable As String
    Variable = "No entiendo muy bien"
    Debug.Print Variable
    Call chgVar(Variable, "asi? o como?")
    Debug.Print Variable
End Sub

raul338

Cabe recalcar que estas declarando vVar como ByVal, por lo que no afecta en nada fuera de la funcion (estas haciendo una instruccion y un parametro para nada)

Esa funcion deberia funcionar, pero le estas pasando un variant y string como parametros?

BlackZeroX

#3
...

mmm

Cita de: agus0 en 22 Enero 2011, 22:06 PM
Código (vb) [Seleccionar]
Private Sub ChgVar(ByVal vVar As Object, NewStr As String)
'On Error Resume Next
    vVar = NewStr
End Sub


* Cuando es una variable object y se le quiere asignar otra, solo se setean es decir asi Set variableObject = VariableObject

* Por otro lado un byval como parametro realiza una copia mientras que byref realiza el trabajo en la variable que se le paso omo parametro.

* y lo mas importante la logica de la funcion esta mal!¡, podrias explicarnos que deseas hacer y te podremos guiar!¡.

Temibles Lunas!¡.
The Dark Shadow is my passion.

agus0

#4
Muchas Gracias ignorantev1.1 Me Confundi Yo Lo Declare como Objeto



Cita de: ignorantev1.1 en 22 Enero 2011, 22:14 PM
Código (vb) [Seleccionar]

Sub chgVar(tVar As String, ByVal valor As String)
   tVar = valor
End Sub

Private Sub Form_Load()
   Dim Variable As String
   Variable = "No entiendo muy bien"
   Debug.Print Variable
   Call chgVar(Variable, "asi? o como?")
   Debug.Print Variable
End Sub


Algo asi Pero ahora que me doy Cuenta la Variable La pasaste Como tal yo Necesitaria algo asi:
Código (vb) [Seleccionar]

Sub chgVar(tVar As String, ByVal valor As String)
   tVar = valor
End Sub

Private Sub Form_Load()
   Dim Variable As String
   Variable = "No entiendo muy bien"
   Debug.Print Variable
   Text1.Text = "Variable"
   Call chgVar(Text1.Text, "asi? o como?")
   Debug.Print Variable
End Sub

raul338

Código (vb) [Seleccionar]

Sub chgVar(tVar As TextBox, ByVal valor As String)
    tVar.Text = valor
End Sub

Private Sub Form_Load()
    Call chgVar(Text1, "asi? o como?")
End Sub


Algo asi? Dudo que sea lo que necesites. Que quieres hacer exactamente?

agus0

Cita de: raul338 en 23 Enero 2011, 03:53 AM
Código (vb) [Seleccionar]

Sub chgVar(tVar As TextBox, ByVal valor As String)
    tVar.Text = valor
End Sub

Private Sub Form_Load()
    Call chgVar(Text1, "asi? o como?")
End Sub


Algo asi? Dudo que sea lo que necesites. Que quieres hacer exactamente?

El Tema es asi Quiero Cambiar una Variable Que Existe Pero Buscarla por un TextBox Por Ejemplo asi

Yo Escribo en El TextBox1 El Nombre de la Variable que quiero Cambiar y en el TextBox2 Lo que Voy a introducir en la Variable. Se entiende?

seba123neo

Hola, lo que quiere si no entendi mal es cambiar el valor de una variable, conociendo su nombre como string...eso lo podes hacer con la funcion CallByName.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

BlackZeroX

.
Yo sabia que CallByName() solo funciona con Propiedades, funciones y/o Procesos ( es decir metodos ) mas no con variables... por otra parte esto se puede hacer con MS Script agregando el modulo de clase, con las variables publicas ( Leer la MSDN No sean flojos ). Pero esto es un lio, por quie no mejor hacer un Select Case y evitarse tantas cosas sin un fin?,

P.D.:



Dulces Lunas!¡.
.
The Dark Shadow is my passion.

seba123neo

#9
@BlackZeroX: con variables no va, pero se puede crear una clase que tenga metodos que cambie los valores de las variables y tengan el mismo nombre los metodos que las variables, el tema es que hay que crear un metodo para cada variable...otra que se me ocurre y no probe si es posible, es manipular ya la variable desde memoria obteniendo la direccion de la variable con StrPtr(nombreVariable) y con alguna api setearle el valor que el pone en el textbox, pero ya se hace mas complicado para algo que creo se puede solucionar mas facil.

agus0 , tendrias que decir para que realmente necesitas hacer esto, para ver si se puede hacer de otra forma.

PD: ojala hubiera estado de parranda, al contrario estuve mas ocupado por eso no entraba.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson