varias dudas sobre VB.

Iniciado por Sai-To, 15 Enero 2008, 17:58 PM

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

Sai-To

Salduos, bueno gente me e dedicado a leer y aprender a entender VB pero ahora me surgieron varias "Dudas" claro son algo basicas y estupidas, primero va de variables, ok para declarar variables, que si integer es para numeros, string, para cadenas, etc,.... pero por ejemplo cuando se que tengo que declarar una variable Long o Byte?

esa es la primera y la segunda es que hace el ByVal osea mi manual explica eso pero no me aclara cuando saber que la debo usar, el ByVal es por ejemplo para declarar variables tambien que si:

ByVal (hijo As Integer)

o algo asi disuclpen que los moleste pero necesito saber! ;)

Salu2's! 8)

???

Cita de: brache en 15 Enero 2008, 17:58 PM

cuando se que tengo que declarar una variable Long o Byte?


Integer es unicamente para enteros (1,3,etc) ; Long cuando trabajes con numeros "grandes" de preferencia aunque sirve tambien para numeros con punto flotante no muy "grandes" pero reservas memoria inecesaria...

Cita de: brache en 15 Enero 2008, 17:58 PM
que hace el ByVal

Como recien comienzas uno de los uso más practicos es a la hora de declarar tus propias funciones, y quieres pasar parametros a la función:

NombreDeLaFuncion(ByVal Parametro as String)

pero sigue leyendo y ya se te aclararan las dudas...

Salu2 ;)

cassiani

Citarcuando se que tengo que declarar una variable Long o Byte?

Debes tomar en cuenta el rango que tendrá tu variable a la hora de declararla:

Byte --> tamaño 1 byte --> rango de valores de 0 a 255
Long --> tamaño 4  bytes  --> rango de valores de -2,147,483,648 a 2,147,483,647                       

Citarque hace el ByVal

El Byval lo que hace es crear una copia de la variable que envías como parámetro, esto con la intención de que la original no sea modificada, mira este EJEMPLO:
Option Explicit
Dim Cadena As String

Private Sub Form_Load()
    Cadena = "Mensaje Inicial" 'Valor Inicial
    MsgBox Cadena 'Muestra el valor inicial
    Prueba Cadena 'Resultado de la rutina
    MsgBox Cadena '¿Y que paso con la variable Cadena?
End Sub

Public Sub Prueba(ByVal Parametro As String)
   Parametro = Parametro & " Modificado"
   MsgBox Parametro
End Sub


Como veras, el valor de Cadena pasado como parámetro a la rutina Prueba, es modificado, pero solo se refleja dentro de la rutina mas no fuera de ella.

Prueba quitando el ByVal y fijaos en lo que pasara: (otro EJEMPLO)
Public Sub Prueba(ByVal Parametro As String) 'Ya lo probamos así...
Public Sub Prueba(Parametro As String)' Ahora lo probamos sin ByVal...

Sin el ByVal la rutina no solo cambia el valor pasado como parámetro dentro de ella, sino que también afecta fuera de la misma.



Sai-To

osea en pocas palabras el ByVal es para poner "variables" a parametro, y estas NO pierdan su valor?

Salu2's! 8)

vivachapas

byte lo usas x ejemplo cuando alguien tiene q opner su edad en un formulario (ya q nadie va a poner mas de 255 años) long lo usas x ejemplo para guardar el puerto al cual se conecta un control winsock (no se me ocurre otro ej xD) desp esta integer, single, double, boolean, string q son tb muy usados... x ejemplo single lo uso para enviar el tamaño de un archivo (para envio de archivos grandes) string para almacenar texto, boolean para ver si algo es verdadero y falso... o negativo o positivo etc..

...

aca encontre algo q te puede ser util (xq yo soy malo para explicar xD)

http://dieumsnh.qfb.umich.mx/VisualBasic/parte1.htm#VARIABLES.%20DEFINICIÓN%20Y%20ENTORNO


SALUDOS

???

Cita de: brache en 15 Enero 2008, 19:24 PM
osea en pocas palabras el ByVal es para poner "variables" a parametro, y estas NO pierdan su valor?

Salu2's! 8)

Si... o bueno.. almenos tienes la idea central.. ;)

cassiani

Citarosea en pocas palabras el ByVal es para poner "variables" a parametro, y estas NO pierdan su valor?

Salu2's! 8)

Algo así, un parámetro es una variable que puede ser recibida por una subrutina, el ByVal lo que hace es darle una copia para que no sea modificada la original (eso es todo).

¡S4lu2!