DoEvents se cuelga!

Iniciado por pandoro, 4 Junio 2008, 19:35 PM

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

pandoro

Hola tengo una pregunta sobre una aplicacion que tengo hecha en Visual Basic 6, hace unos cuantos bucles, y dentro de uno tengo un DoEvents y cuando da un par de vueltas se cuelga en el DoEvents y no hace nada mas, se queda en esa linea. No se como solucionarlo.

Alguien me podria ayudar?

Gracias.

Un saludo.

Mad Antrax

copy/paste todo el trozo de código donde aparecen los bucles... asi por telépatia es algo difícil.
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

Kizar

El DoEvents no es el problema, le problema esta en que no se cumplen las condiciones para salir de el bucle y se convierte en un proceso infinito.
El DoEvents solo se utiliza dentro de los bucles para consumir menos cantidad de recursos del sistema, es como una pausa muy pequeña.

Mad Antrax

Un ejemplo claro para usar DoEvents:

Código (vb) [Seleccionar]
For i = 1 to 1000
   Label1.Caption = i
Next i


Al ejecutar esto, el usuario sólo alcanzará ver el número 1000 de forma instantánea. Si queremos mostrar el progreso del bucle podemos usar lo siguiente:

Código (vb) [Seleccionar]
For i = 1 to 1000
   Label1.Caption = i
   If i Mod 10 = 0 Then
      DoEvents
      Sleep 250
   End If
Next i


Esta nueva condición que hay dentro del bucle hace que el código entre en modo Sleep cada 10 iteraciones. Es facil... Dividimos la variable i entre 10, si el resto de la división es 0 entonces la condición se cumple. En este ejemplo el usuario verá:

1,10,20,30,40, ..., 980, 990, 1000

Si cambiamos la condición:

Código (vb) [Seleccionar]
If i Mod 50 Then

El usuario obtendrá:

1,50,100,150, ..., 950, 1000

(Ojo, Sleep es una API que no he declarado en este ejemplo, para usarla primero hay que declarar dicha API)

Saludos!!
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.