Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: ezugaru en 25 Septiembre 2009, 19:03 pm



Título: Problema con While
Publicado por: ezugaru 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.


Título: Re: Problema con While
Publicado por: Keyen Night 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.  


Título: Re: Problema con While
Publicado por: ezugaru en 25 Septiembre 2009, 19:58 pm
porque exactamente no entendia muy bien como hacer eso que pones ... gracias!!!!!!!!


Título: Re: Problema con While
Publicado por: Novlucker 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


Título: Re: Problema con While
Publicado por: Atrum 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.