Programación General > Visual Basic 6.0 e inferiores

 BUCLE INFINITO "como evitarlo"

<< < (2/2)

m0skit0:
No escribas en mayúsculas, es molesto :P

Tampoco es tan complicado de entender, hombre. Éste es tu código:


--- Código: Visual Basic ---a = text1.textWhile a < 10    text1.text = val (a) + 1Wend Le asignas a a el valor de text1. Luego mientras a sea menor de 10, pones que text1 sea a + 1. No sé por qué razón usas Val(), eso es para cadenas de caracteres, y a es un entero (Integer) :huh: . Sí que tiene sentido el Val() en el timer.

Entonces, repites lo que hay dentro del while infinitas veces, porque a jamás cambia de valor, por tanto jamás vas a salir del bucle porque la condición es que a sea 10 o mayor para que esto ocurra. O lo que es lo mismo, mientras a < 10 repetirás eso, es decir, siempre, porque a no cambia. Tampoco cambias el valor de a en el timer que tienes, que por cierto no le veo mucho sentido... posiblemente porque no entiendo qué pretendes hacer, cuál es el objetivo de tu código.

Un par de consejos: pon un DoEvents dentro del bucle, porque sino se te quedará colgado el VB6 al entrar en el bucle, y además así te actualiza el text1:


--- Código: Visual Basic ---While a < 10    DoEvents    text1.text = val (a) + 1Wend 
También, While-Wend está obsoleto, usa Do While-Loop:


--- Código: Visual Basic ---Do While a < 10    DoEvents    text1.text = val (a) + 1Loop Si cambiásemos el valor de a, sí que saldría del bucle (siempre y cuando eventualmente se deje de cumplir que a < 10). Por ejemplo, esto ya no es un bucle infinito:


--- Código: Visual Basic ---Do While a < 10    DoEvents    text1.text = val (a) + 1    a = a + 1Loop ¿Está más claro ahora?

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa