elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:20  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  "El misterio de la variable indx" jaja
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: "El misterio de la variable indx" jaja  (Leído 1,206 veces)
$Edu$


Desconectado Desconectado

Mensajes: 1.415



Ver Perfil
Re: "El misterio de la variable indx" jaja
« Respuesta #15 en: 26 Octubre 2011, 15:52 »

Jeje se que esta feo agregar todos los datos para llegar ahi pero bueno, yo los agrego en unos segundos de tantas veces que lo he hecho xD

No me funciono eso BackZeroX, igual gracias, quedara como uno de esos misterios sin resolver jajajaja


En línea

Estado en el MSN:
rob1104


Desconectado Desconectado

Mensajes: 326


Usuario común


Ver Perfil
Re: "El misterio de la variable indx" jaja
« Respuesta #16 en: 26 Octubre 2011, 22:42 »

Ya entendí el problema, la verdad si es algo raro que visual basic no destruya la variable al descargar el form =S

Compruebenlo de esta forma:

  • En un proyecto agregar dos form (form1 y form2)
  • Agregar un command a cada uno

Usar el sig. codigo en form1
Código
Option Explicit
 
Private Sub Command1_Click()
   Form2.Show
End Sub

Y el sig codigo en form2
Código
Option Explicit
Dim i As Integer
 
Private Sub Command1_Click()
   Unload Me
End Sub
 
Private Sub Form_Load()
   MsgBox i
   i = i + 1
   MsgBox i
End Sub
 

Al cerrar el form2 aun con el unload me la variable i conserva su valor. Obviamente esto se puede solucionar de muchas formas, y $Edu$ el método que utilizas de inicializar la variable 0 es muy valido, de hecho se recomienda siempre inicializar la variables para evitar este tipo de cosas. Otro detalle curioso es qui si la variable es declarada dentro de form_load() si se destruye su valor. En fin, visual basic y sus misterios :P




En línea



$Edu$


Desconectado Desconectado

Mensajes: 1.415



Ver Perfil
Re: "El misterio de la variable indx" jaja
« Respuesta #17 en: 26 Octubre 2011, 23:49 »

Y yo haciendoles poner miles de cosas para llegar al bug jajajaja, grande rob!

A ver si alguien descubre el porque :P
En línea

Estado en el MSN:
burbu_1

Desconectado Desconectado

Mensajes: 68


Ver Perfil
Re: "El misterio de la variable indx" jaja
« Respuesta #18 en: 27 Octubre 2011, 00:12 »

buenas, no se si tendrá que ver.....pero he encontrado esto sobre la "variable global oculta"

Citar
Liberación completa de memoria y recursos

La única manera de liberar toda la memoria y los recursos es descargar el formulario y establecer todas sus referencias a Nothing. La referencia que más se suele pasar por alto al realizar esta tarea es la variable global oculta mencionada anteriormente. Si en algún momento ha hecho referencia al formulario por su nombre de clase (como aparece en la propiedad Name de la ventana Propiedades), ha utilizado la variable global oculta. Para liberar memoria del formulario, tiene que establecer esta variable a Nothing. Por ejemplo:

Set Form1 = Nothing

Citar

es la clase de problema que te da ganas de tirar el pc por la ventana  :laugh: :laugh: :laugh:
En línea
$Edu$


Desconectado Desconectado

Mensajes: 1.415



Ver Perfil
Re: "El misterio de la variable indx" jaja
« Respuesta #19 en: 27 Octubre 2011, 00:19 »

Entonces obligados estamos a poner en el form_unload() set form = nothing ? que feo eso de vb6.. jaja

En .net por ejemplo existe el recolector de basura que se encarga de eso, por eso sera que no me paso nunca en .net?
En línea

Estado en el MSN:
raul338
Moderador
***
Conectado Conectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: "El misterio de la variable indx" jaja
« Respuesta #20 en: 27 Octubre 2011, 00:23 »

Entonces obligados estamos a poner en el form_unload() set form = nothing ? que feo eso de vb6.. jaja

En realidad tiene lógica, porque una vez Llamado al "Unolad Me" tenemos accesos a las variables publicas desde otros formularios. Pero no sabia que tampoco se destruían las variables privadas.

Y si, al menos eso fue siempre que se utilizaba instancias de formularios :)
En línea

DarkMatrix

Desconectado Desconectado

Mensajes: 125


Nuestro Limite es la Imaginacion


Ver Perfil WWW
Re: "El misterio de la variable indx" jaja
« Respuesta #21 en: 27 Octubre 2011, 05:41 »

Interesante tema, no sabia eso O_O
En línea

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: "El misterio de la variable indx" jaja
« Respuesta #22 en: 28 Octubre 2011, 04:39 »

mas claro que el agua esta cita, yo tampoco lo sabia:

Citar
Form Modules
Form modules, like class modules, require that an instance of the form be created before its code and data can be used. However, VB treats form modules somewhat differently and will automatically create an instance of a form if any propery of the form is referenced in your code. Also remember that module level variables in forms are not destroyed until the reference to the form object is released by setting the form to Nothing. Unloading a form does not clear the value of the form's module level variables.

inicializar las variables en necesario y esta bien que lo hagas, siempre debe ser asi.
« Última modificación: 28 Octubre 2011, 04:45 por seba123neo » En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines