SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: calichecal en Miércoles 24 de Junio de 2009, 02:43
-
estoy tratando de utilizar un while solo por practicar que empieze con el evento clip de un command ,he leido y seguido al pie de la tetra la estructura de esa instruccion pero siempre termino en un bucle infinito xd....agradesco la ayuda para el que sepa como es la adecuada utilizacion de while y su utilidad...
-
Pon tu bucle y te lo explicamos. Seguramente tu condición está mal.
PD: no olvides las etiquetas de código...
-
Pon tu bucle y te lo explicamos. Seguramente tu condición está mal.
PD: no olvides las etiquetas de código...
Private Sub Command1_Click()
Dim a as integer
a = text1.text
while a < 10
text1.text = val (a) + 1
wend
end sub
Private Sub Timer1_Timer() [propiedad interval = 1000]
text1.text = val(text1.text) + 1
end sub
-
¿Y las etiquetas de código? Mira que lo repito veces y soy pesao :lol:
Fíjate que tú pones como condición de que se repita el bucle a < 10. Y repites
Este código no cambia el valor de a, por tanto a será siempre el valor de text1.text antes de empezar el bucle. Por tanto nunca llegará a ser mayor que diez. Por tanto nunca sales del bucle.
-
¿Y las etiquetas de código? Mira que lo repito veces y soy pesao :lol:
Fíjate que tú pones como condición de que se repita el bucle a < 10. Y repites
Este código no cambia el valor de a, por tanto a será siempre el valor de text1.text antes de empezar el bucle. Por tanto nunca llegará a ser mayor que diez. Por tanto nunca sales del bucle.
HABER SI ENTENDI : ES COMO SI EN A QUEDARA CON EL VALOR DEL TEXT1.TEXT DE CUANDO EMPEZO EL BUCLE? :wacko:
-
No escribas en mayúsculas, es molesto :P
Tampoco es tan complicado de entender, hombre. Éste es tu código:
a = text1.text
While a < 10
text1.text = val (a) + 1
Wend
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:
While a < 10
DoEvents
text1.text = val (a) + 1
Wend
También, While-Wend está obsoleto, usa Do While-Loop:
Do While a < 10
DoEvents
text1.text = val (a) + 1
Loop
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:
Do While a < 10
DoEvents
text1.text = val (a) + 1
a = a + 1
Loop
¿Está más claro ahora?