elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problema con While
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con While  (Leído 3,846 veces)
ezugaru

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Problema con While
« en: 25 Septiembre 2009, 19:03 pm »

Hola a todos, estoy desarrollando una aplicacion relativamente sencilla pero hay un while que no me responde como yo espero, el código es este:
Código:
Dim respuesta As Char
                            respuesta = UCase(InputBox("¿Desea eliminar la clave definitivamente? S=Elimina definitivamente la clave. N=Elimina solo la marca de esa clave", "Responda S ó N"))


                            While (respuesta <> "S" Or respuesta <> "N")

                                respuesta = UCase(InputBox("Respuesta no aceptada. ¿Desea eliminar la clave definitivamente? S=Elimina definitivamente la clave. N=Elimina solo la marca de esa clave"))

                                If respuesta = Nothing Then

                                    Eliminar.Enabled = False
                                    id_prd.Text = Nothing
                                    descripcion.Text = Nothing
                                    id_cat.Text = Nothing
                                    marca.Text = Nothing
                                    existencia.Text = Nothing
                                    p_lista.Text = Nothing
                                    id_prd.Focus()

                                    MsgBox("Baja de artículo cancelada.", MsgBoxStyle.Exclamation)

                                    Exit While

                                End If

                            End While
El problema es que se supone que si el usuario ingresa S o N el while deberia terminar y pasar a la siguiente sentencia de control que es un IF, sin embargo aun poniendo la S o la N el while no termina, ya he probado pasando msgboxes en el while para ver que la variable reciba correctamente el parametro y efectivamente el msgbox me devuelv S o N asi que no se que pueda ser ya le di vueltas y no se que pueda ser ... ayuda por favor.


En línea

Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Problema con While
« Respuesta #1 en: 25 Septiembre 2009, 19:54 pm »

Porque te complicas tanto con un blucle, cuando puedes revisar el valor devuelto por un Msgbox...
Código
  1.        If MsgBox("¿Desea eliminar la clave definitivamente?", MsgBoxStyle.YesNo, "Eliminar Clave") = MsgBoxResult.Yes Then
  2.            ''Evento si se responde si
  3.        Else
  4.            ''Evento si se responde no
  5.        End If
  6.  


En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
ezugaru

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Problema con While
« Respuesta #2 en: 25 Septiembre 2009, 19:58 pm »

porque exactamente no entendia muy bien como hacer eso que pones ... gracias!!!!!!!!
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Problema con While
« Respuesta #3 en: 25 Septiembre 2009, 20:01 pm »

Además de que para el bucle while debes de utilizar una bandera ... el while no realiza las operaciones/comparaciones que hace el if .. así que no puedes usar un OR

Por lo demás... ya tienes tu respuesta

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Atrum

Desconectado Desconectado

Mensajes: 65



Ver Perfil WWW
Re: Problema con While
« Respuesta #4 en: 25 Septiembre 2009, 23:52 pm »

Se puede utilizar cualquier operador comparativo en un while y tambien operadores logicos(OR , AND, NOT)  ya que la condicion que evalua es un booleano, asi que el problema estuvo en la condicion:

Código
  1. While (respuesta <> "S" Or respuesta <> "N")

esta condicion siempre va a devolver un TRUE ya que el OR siempre va a tomar por verdadera si una de las condiciones se cumple
asi que

si respuesta = "A"
respuesta es diferente de S y respuesta es diferente de N por tanto devuelve TRUE

si respuesta = "S"
respuesta no es diferente de y respuesta si es diferente de N por tanto tambien devuelve TRUE

si respuesta = "N"
repuesta es diferente de S y respuesta no es diferente de N por tanto devuelve TRUE

en conclusion, no importa que contenga la variable respuesta la condicion siempre sera true y el bucle sera infinito.

Esto lo digo solo a modo de comentario, ya que como dijeron antes este bucle es inecesario.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines