Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: miomi en 19 Enero 2011, 16:27 pm



Título: Duda novato VB6
Publicado por: miomi en 19 Enero 2011, 16:27 pm
Hola, estoy empezando a aprender ellenguaje VB6 pero no entiendo una cosa:

Dim Número As Integer
Número = 5
Print Número
Número = 12
Print Número

Bueno, este es un ejemplo en un curso de VB6. Veran no entiendo para que seusa Dim, en el curso lo explica dice que es para guardar un ''cachillo'' de memoria para nuestro uso. No entiendo en que sediferencia eso de crear dos variable y ya esta. Ejemplo

Show
Numero = 5
Print NUmero
Numero = 6
Print Numero

Al fin y al cabo hacen lo mismo... Gracias


Título: Re: Duda novato VB6
Publicado por: ignorantev1.1 en 19 Enero 2011, 16:33 pm
Si es lo mismo, pero lo que un buen programador debe tener es bien documentado y organizado el codigo. Busca sobre "option explicit" y "parametros por referencia"... ;)


Título: Re: Duda novato VB6
Publicado por: 79137913 en 19 Enero 2011, 16:42 pm
HOLA!!!

Cuando se declara una variable sea Publica (Public) o Privada (Dim o Private) (Tambien existen otros tipos :¬¬) se guarda un espacio especifico de la memoria para usarla luego, en cambio si uno no la declara VB6 generara una instancia de cada variable que se use (no declarada) la misma no se podra usar fuera del procedimiento en el que se creo (si se usa estara vacia). Por ejemplo hace esto:

En el Form_load pone Numero = 3
Y en Command1_click pone print Numero

Veras que no imprime el 3 sino una variable vacia.

Para que imprima el 3 tendras que DECLARAR Numero fuera de los procedimientos. Asi si es Privada quedara declarada para todo el modulo y si es publica para el proyecto.

En fin, conviene que las declares, por que el Motor de VB6 que selecciona las variables automaticamente a veces no anda bien, talves la declara como numero entero y era un numero con coma o doble.

Espero haber sido util, sino responde nuevamente e intento explicarlo de nuevo ;).

GRACIAS POR LEER!!!


Título: Re: Duda novato VB6
Publicado por: Psyke1 en 19 Enero 2011, 16:46 pm
Para la segunda forma (sin Dim) no puedes tener Option Explicit declarado. :silbar:
El Option Explicit, te avisa si utilizas una variable no declarada... :)
Sin él, todas las variables quedarían Variant cosa que no es aconsejable porque ocupa más espacio en la memoria que cualquier otro tipo de varibale, al ser la variable comodín. :xD A parte que los arrays por defecto se crean de 0 to 10...
Además, sería un código mucho más desorganizado. :-\

Más info: http://en.wikipedia.org/wiki/Variant_type



Conclusión:
Usa Option Explicit y declara todas las variables. ;)

Un ejemplo:
Código
  1. 'código declarando variable
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim Número As Integer
  6.    Me.AutoRedraw = True
  7.    Número = 5
  8.    Me.Print Número
  9.    Número = 12
  10.    Me.Print Número
  11. End Sub

Código
  1. 'código sin declarar variable
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5.    Me.AutoRedraw = True
  6.    Número = 5 ' Error - variable no definida
  7.    Me.Print Número
  8.    Número = 12
  9.    Me.Print Número
  10. End Sub

@79137913
No solo hay Private, Public y Dim.
Tambien hay Global, Static (y Const para las constantes... :P)

Más info: http://www.vbforums.com/showthread.php?t=468662

DoEvents! :P


Título: Re: Duda novato VB6
Publicado por: miomi en 19 Enero 2011, 17:05 pm
Muchas gracias a todos los que habeis respondido, me habeis resuelto la duda. Perdonad si era muy tonta pero es mi primer lenguaje jeje...
Muchisimas gracias, gran comunidad! Salu2


Título: Re: Duda novato VB6
Publicado por: 79137913 en 19 Enero 2011, 17:10 pm
HOLA!!!

@Mr Frog:  :¬¬ Es cierto ya modifique.

GRACIAS POR LEER!!!


Título: Re: Duda novato VB6
Publicado por: BlackZeroX en 19 Enero 2011, 20:50 pm

No solo hay Private, Public y Dim.
Tambien hay Global, Static (y Const para las constantes... :P)


y Friend para los procesos/propiedades/funciones, pero esto ya es irse por las ramas del tema/hilo principal que era solo Dim!¡.

Dulces Lunas!¡.