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

Diferencia ByVal, ByRef...

Estas en el tema de Diferencia ByVal, ByRef... en el foro de Visual Basic clásico en Foros del Web. Alguien podría decirme cual es la diferencia entre estas tres declaraciones: Function MiFuncion(Parametro As String) Function MiFuncion(ByVal Parametro As String) Function MiFuncion(ByRef Parametro As String)...
  #1 (permalink)  
Antiguo 25/05/2005, 11:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Diferencia ByVal, ByRef...

Alguien podría decirme cual es la diferencia entre estas tres declaraciones:
Function MiFuncion(Parametro As String)
Function MiFuncion(ByVal Parametro As String)
Function MiFuncion(ByRef Parametro As String)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #2 (permalink)  
Antiguo 25/05/2005, 11:55
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Sin nada en VB es ByRef, aunque debería ser ByVal como en los demás lenguajes.

ByVal es "por valor". Tú pasas un número, y el número se copia y se usa en la función. Si modificas el número, lo harás en la función.

ByRef es "por referencia". Las referencias son instancias de la misma variable. Es como la misma variable usada en muchos lugares. Por tanto si la modificas en la función, lo harás en el resto del programa.
  #3 (permalink)  
Antiguo 25/11/2008, 20:03
 
Fecha de Ingreso: abril-2008
Mensajes: 11
Antigüedad: 16 años
Puntos: 1
Respuesta: Diferencia ByVal, ByRef...

Que interesante, realmente no sabia en que en visual basic los valores entraban por referencia por defecto... hmm esto me parece... inadecuado, porque puede producir errores... yo opino que el ambito de una funcion deberia mantenerse mas hermetico.
  #4 (permalink)  
Antiguo 26/11/2008, 08:10
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Diferencia ByVal, ByRef...

aqui tienes dos ejemplos q me han ayudado a mi:

Código de ejemplo ByVal

Private Sub Command1_Click()
Dim Un_Valor As Long
Un_Valor = 100
'Se envía la variable por Valor ( ByVal )
Call Sumar(Un_Valor)
'Muestra el valor que es 100, ( no se modificó en la función Sumar )
MsgBox Un_Valor
End Sub

Sub Sumar(ByVal Valor As Long)
'Modifica la variable
Valor = Valor + 100

End Sub



Código ByRef

Private Sub Command1_Click()
Dim Un_Valor As Long
Un_Valor = 100
'Se envía la variable por Referencia ( ByRef ) con el valor 100
Call Sumar(Un_Valor)
'Muestra el valor que ahora es 200, ( ya que se modificó en la Sub Sumar)
MsgBox Un_Valor
End Sub

Sub Sumar(ByRef Valor As Long)
'Modifica la variable
Valor = Valor + 100
End Sub


p.d. como bien dijo MaxExtreme Function MiFuncion(Parametro As String) es igual a
Function MiFuncion(ByRef Parametro As String)
  #5 (permalink)  
Antiguo 26/11/2008, 18:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Diferencia ByVal, ByRef...

¿Se han fijado que el tema es de hace 3 años y medio? .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 27/11/2008, 01:27
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Diferencia ByVal, ByRef...

ya decia yo! si hace poco david me resolviste una duda acerca de este tema... sorry!
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.
Tema Cerrado

SíEste tema le ha gustado a 6 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 05:22.