none
Valores fuera de rango RRS feed

  • Pregunta

  • Hola a todos,

    Estoy realizando una aplicacion con Visual C++ usando Windows Forms.

    En unos determinados textBox de mi aplicacion tengo que controlar el valor de unas entradas analogicas...y algunas veces se me van fuera de rango...por ejemplo este valor 3.5467867E-37

    Como podria controlar que estos valores no me apareciesen, y que en su lugar poder escribir en el textBox "Out of Range"???

    He probado con un simple if(valor<0.0001 || valor>1000) escribir "Out of Range" else escribir valor, pero no funciona!!

     

    Gracias de antemano a todos

     

    miércoles, 23 de junio de 2010 15:56

Todas las respuestas

  • ¿Qué tipo de dato es valor? Porque debería funcionar. ¿Qué ves en el
    depurador sobre la variable cuando se ha ido de rango?
     
     
    On Wed, 23 Jun 2010 15:56:48 +0000, Marodal wrote:
     
    >
    >
    >Hola a todos,
    >
    >Estoy realizando una aplicacion con Visual C++ usando Windows Forms.
    >
    >En unos determinados textBox de mi aplicacion tengo que controlar el valor de unas entradas analogicas...y algunas veces se me van fuera de rango...por ejemplo este valor 3.5467867E-37
    >
    >Como podria controlar que estos valores no me apareciesen, y que en su lugar poder escribir en el textBox "Out of Range"???
    >
    >He probado con un simple if(valor<0.0001 || valor>1000) escribir "Out of Range" else escribir valor, pero no funciona!!
    >
    >
    >Gracias de antemano a todos
    >
     

    MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/
    miércoles, 23 de junio de 2010 19:02
    Moderador
  • Se trata de un valor de tipo float.

    He intentado corregir esto mediante el siguiente codigo:

    if(entrada1>-0.0001 && entrada1<10000)

         MonitorEntradasAnalogicasEntrada1->Text = Convert::ToString(entrada1);

    else

        MonitorEntradasAnalogicasEntrada1->Text = "Out of Range";

     

    Los valores que aparecen son por ejemplo:

    3'761535E-37

    No entiendo por que no captura la condicion el if

    Un saludo

     

    jueves, 24 de junio de 2010 10:00
  • Vale, ya esta, lo siento, hay que refinar el bloque if

     

    if

     

    (((entrada1>0.0001) && (entrada1<1000)) || ((entrada1<-0.0001)&& (entrada1>-1000)) || (entrada1 == 0))

    MonitorEntradasAnalogicasEntrada1->Text= Convert::ToString(entrada1);

    //System::Math::Round(entrada1,2));

     

    else

    MonitorEntradasAnalogicasEntrada1->Text =

    "Out of Range";

     

    GRacias

    jueves, 24 de junio de 2010 10:06