Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: JValero en 10 de Septiembre 2014, 18:30
-
Buenas tardes,
Tengo un problema con el código del siguiente ejercicio.
En el programa debería de insertar la contraseña y reconocerla como válida o no. al tercer fallo el programa debería indicarme que he fallado tres veces y cerrarse.
El programa funciona cuando inserto la contraseña correcta pero me entra en un bucle sin salida cuando introduzco una contraseña erronea.
¿Alguna idea? Muchas gracias.
Option Explicit
Dim Clave As Integer
Dim i As Integer
Private Sub Form_load()
Form1.Caption = "Insertar contraseña"
Label1.Caption = "Por favor, introduzca su contraseña"
Label1.Alignment = 2
Text1 = ""
Text1.Alignment = 2
Command1.Caption = "Verificar"
End Sub
Private Sub Command1_click()
Clave = Text1
Do While Clave <> "1234"
i = i + 1
MsgBox ("La clave introducida no es válida. Inténtelo de nuevo.")
Text1 = ""
If i > 2 Then
MsgBox ("Ha introducido tres veces la clave incorrectamente.")
End If
Loop
MsgBox ("Contraseña correcta")
End Sub
-
No estoy seguro, pero el problema parece ser el mismo que comentamos sobre el ejercicio 6 en https://www.aprenderaprogramar.com/foros/index.php?topic=1294.0
Es decir, que usando un textbox no hay detención para introducir el dato.
Si en vez de usar un textbox usas inputbox (míralo en el ejercicio 6) debería detenerse, pedir el dato y funcionar como se espera. Es decir, elimina los textbox y usa sólo inputbox.
Saludos!
-
Hola alex,
Si, efectivamente lo habíamos comentado anteriormente pero no entiendo porque no funciona con un MSGBOX.
Pensaba que una vez pinchase sobre aceptar la aplicación volvería a la pantalla inicial para permitirme insertar una contraseña nuevamente.
No obstante, tienes toda la razón, con el inputbox funciona perfectamente.
Muchas gracias!!
-
No vuelve a la pantalla inicial porque el bucle no le deja, parece que debiera detenerse con el msgbox, pero aunque se detuviera sería para volver a mostrarlo inmediatamente porque el bucle no tiene condición de salida. Con tres repeticiones se supone que se muestra un mensaje pero al no haber condición de salida se repite y se repite y se repite hasta el infinito...