Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ricardovinzo en 29 Junio 2008, 04:34 am



Título: una sencilla y tonta pregunta del ByVal
Publicado por: ricardovinzo en 29 Junio 2008, 04:34 am
tengo esta duda e estado leyendo sobre ByVal ByRef, pero no entiendo osea no entiendo no creo que is pero no me queda claro lo que realmente hace el ByVal?
hace por ejemplo que cuando le pase un daot a un argumento y el argumento tenga el ByVal los datos no puedan ser cambiados y alguien me daria un corto ejemplo?

si no es molestia! :P

Gracias


Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: seba123neo en 29 Junio 2008, 04:43 am
google no muerde:

http://www.google.com.ar/search?q=byval&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a (http://www.google.com.ar/search?q=byval&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a)

saludos.


Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: cassiani en 29 Junio 2008, 05:06 am
Pero si tu mismo lo dices, utilizas ByVal para pasar un obeto como valor y ByRef para pasarlo como referencia

mira este ejemplo:

Código
  1. Private Sub Form_Load()
  2.    I = 3
  3.    MsgBox "Valor Inicial de I --> " & I
  4.  
  5.    MsgBox MsnByRef(I) 'Pasandolo como referencia
  6.    'MsgBox MsnByVal(I) 'Pasandolo como valor
  7.  
  8.    MsgBox "Valor final de I --> " & I
  9. End Sub
  10.  
  11. Private Function MsnByRef(ByRef A As Byte) As Byte
  12.    A = A + 3
  13.    MsnByRef = A
  14. End Function
  15.  
  16. Private Function MsnByVal(ByVal A As Byte) As Byte
  17.    A = A + 3
  18.    MsnByVal = A
  19. End Function

Cuando lo pasas como referenca afectas a ese objeto desde la rutina, eso quiere decir, que si I valia 3, será afectada, aumentando su valor. Con ByVal eso NO sucede.

Serás tu de acuerdo a lo que quieras hacer, quien decida cual usar, pero es buena costumbre especificar como se le pasa el parametro a la rutina.








Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: SKL (orignal) en 29 Junio 2008, 05:20 am
Pero si tu mismo lo dices, utilizas ByVal para pasar un obeto como valor y ByRef para pasarlo como referencia

mira este ejemplo:

Código
  1. Private Sub Form_Load()
  2.    I = 3
  3.    MsgBox "Valor Inicial de I --> " & I
  4.  
  5.    MsgBox MsnByRef(I) 'Pasandolo como referencia
  6.    'MsgBox MsnByVal(I) 'Pasandolo como valor
  7.  
  8.    MsgBox "Valor final de I --> " & I
  9. End Sub
  10.  
  11. Private Function MsnByRef(ByRef A As Byte) As Byte
  12.    A = A + 3
  13.    MsnByRef = A
  14. End Function
  15.  
  16. Private Function MsnByVal(ByVal A As Byte) As Byte
  17.    A = A + 3
  18.    MsnByVal = A
  19. End Function

Cuando lo pasas como referenca afectas a ese objeto desde la rutina, eso quiere decir, que si I valia 3, será afectada, aumentando su valor. Con ByVal eso NO sucede.

Serás tu de acuerdo a lo que quieras hacer, quien decida cual usar, pero es buena costumbre especificar como se le pasa el parametro a la rutina.

por favor declara las variables!


Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: cassiani en 29 Junio 2008, 15:44 pm
Para un ejemplo como este no hace falta, eso se sobre entiende, yo acostumbro a usar el "Option Explicit" así que te imaginaras que siempre declaro...


Título: Re: una sencilla y tonta pregunta del ByVal
Publicado por: juancho77 en 30 Junio 2008, 06:10 am
Usen delphi/pascal y puaaaa leesto!!!!ˇˇˇ