Visual Basic - funciones

Life is soft - evento anual de software empresarial
 
Vista:

funciones

Publicado por Danisss (2 intervenciones) el 13/03/2007 19:59:25
Hola! Me gustaria saber como puedo modificiar el valor de una variable atraves de una funcion.
Por ejemplo tengo x=3 y una funcion Suma(as integer)
le paso x a Suma Suma(x)
y la funcion Suma hace x=x+2
quiero que luego x tome el valor 5, como se haria?
En c hay que darle la direccion de la variable para que la modifique pero en Vb no se...
¿Podriais ayudarme?
GRACIAS!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:funciones

Publicado por Yo (18 intervenciones) el 13/03/2007 20:20:13
Usa ByRef antes de la variable, para que sea pasada por referencia y no por valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sólo una pequeña aclaración

Publicado por Benjo (679 intervenciones) el 13/03/2007 21:53:45
Sólo una pequeña aclaración

Es cierto, los argumentos en las funciones y procedimientos de Visual Basic, se pasan por referencia, lo que sería comparandolo con C "pasar un puntero".
Si es así, entonces no resulta necesario usar una función, ya que estaríamos guardando en la Pila información redundante e inservible.

Cuando pasamos una variable ByRef (por referencia) como argumento de un procedimiento x, estamos delimitando un secto de la Pila con la variable, un sector con el puntero y un sector con el procedimiento. Si usaramos una Función, estaríamos desperdiciando un espacio adicional en la Pila, reservado para la devolución de la Función.

Por eso, con solo asignar el valor ByRef a los argumentos del Procedimiento que va a modificar la variable X, es suficiente, cualquier cambio que sufra el argumento X en el procedimiento, lo tomará automáticamente la X del modulo origen , ya que estamos hablando de la misma variable, aunque su nombre sea distinto.
Tomando el ejemplo de "Y yo", sería así

Private Sub Command1_Click()
Dim x As Integer
'Por defecto, x es igual a 0
Suma x
MsgBox x 'el valor devuelto es 2
End Sub

Private Sub Suma(ByRef i As Integer)
i = i + 2
End Sub

El prefijo ByRef o ByVal, es conveniente usarlo siempre por una simple convención de programación. Es lo mismos que los Controles TextBox, todos sabemos que por default su valor es Text, y que podríamos escribir TextBox1 = "Valor", pero por convención, siempre ponemos TextBox1.Text = "Valor"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funciones

Publicado por JOSE CARLOS (340 intervenciones) el 14/03/2007 01:02:38
en la funcion pon en lugar de x=x+2 pon y=x+2
declara amabas variables como públicas
cuando regreses de la funcion la variable y vale 5 haz x=y y problema resuelto

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar