• Miércoles 11 de Diciembre de 2019, 23:35

Autor Tema:  Validar ingreso de datos en C Sharp  (Leído 9323 veces)

DanielC#

  • Miembro activo
  • **
  • Mensajes: 39
  • Nacionalidad: ar
    • Ver Perfil
Validar ingreso de datos en C Sharp
« en: Miércoles 10 de Julio de 2013, 18:45 »
0

Hola a todos.
Perdón por no presentarme, pero como soy iperactivo con esto de aprender el lenguaje
me tendran muy seguido por aqui y en cada post pondre mis datos que tienen alguna particularidades.-
Bueno a pedir ayuda.-
Danielito como siempre tiene algo más que aprender, el código funciona como lo deseado,solo por una cosa que no logro solucionar ya lidiando por un largo día, el ingreso no debe ser 0.-

Código: C#
  1. mespace ClientesMain
  2. {
  3.    class Validar
  4.    {
  5.       public int ValidarEntero()
  6.       {
  7.          int numero = 0;
  8.          while (true)
  9.         {
  10.            Console.SetCursorPosition(02, 04);
  11.            Console.Write("Número...............:");
  12.            if (Int32.TryParse(Console.ReadLine(), out numero))
  13.               break;
  14.            else
  15.            {
  16.               Console.SetCursorPosition(02,06);
  17.               Console.Write("Ingreso incorrecto(pulse una tecla para intentarlo nuevamente...)");
  18.               Console.ReadKey();
  19.               Console.Write("                                                                    ");
  20.               Console.SetCursorPosition(24, 04);
  21.            }
  22.         }
  23.         return numero;
  24.      }
  25.    }
  26. }
Si le pongo if (numero > 0)   break; como es lógico funciona si se ingresa un 0 y también si se ingresa otra cosa, sólo que no puedo acceder al mensaje(en este último caso).-

Bueno es todo, espero ayuda.-
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Validar ingreso de datos en C Sharp
« Respuesta #1 en: Jueves 11 de Julio de 2013, 17:50 »
0
Hola DanielC#, bienvenido al foro.

Pues mira, tu problema es muy facil de resolver, el Metodo TryParse devuelve true si se pudo convertir el texto en numero, y false si la conversion fallo, entonces simplemente guardas en una variable si la conversion tuvo exito o no, y eso es lo que utilizas en lugar de colocar el TryParse directamen en el if.

Te dejo el codigo para que te quede mas claro.

Código: [Seleccionar]
    class Validar
    {
        public int ValidarEntero()
        {
            int numero = 0;
            bool resultado;
            while (true)
            {
                Console.SetCursorPosition(02, 04);
                Console.Write("Número...............:");
                // En esta variable guardas si la conversion tuvo exito o no
                resultado = Int32.TryParse(Console.ReadLine(), out numero);
                if (resultado && numero != 0)
                    break;
                else
                {
                    Console.SetCursorPosition(02, 06);
                    Console.Write("Ingreso incorrecto(pulse una tecla para intentarlo nuevamente...)");
                    Console.ReadKey();
                    Console.Write("                                                                    ");
                    Console.SetCursorPosition(24, 04);
                }
            }
            return numero;
        }
    }

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

DanielC#

  • Miembro activo
  • **
  • Mensajes: 39
  • Nacionalidad: ar
    • Ver Perfil
Re:Validar ingreso de datos en C Sharp
« Respuesta #2 en: Jueves 11 de Julio de 2013, 18:44 »
0
Hola ProfesorX.
Excelente, sublime, gracias amigo funciona a la perfección, yo dentro de mi ignorancia y
renegando un tanto lo logré pero el código es bastante más largo.-

De mi:Tengo 61 años y soy un "adicto" a la programación, estoy estudiando el lenguaje por medio de manuales bajados de la web y mucha mucha consulta en los foros.-

Saludos y muchas gracias.-
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

DanielC#

  • Miembro activo
  • **
  • Mensajes: 39
  • Nacionalidad: ar
    • Ver Perfil
Re:Validar ingreso de datos en C Sharp
« Respuesta #3 en: Sábado 13 de Julio de 2013, 04:21 »
0
Hola a todos.
Bueno al fin logre otra versión solo que tengo un problema, no puedo regresar con la
tecla Backspace para borrar lo ingresado.-

Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Title = " Validar ingreso de datos";

ConsoleKeyInfo opcion;
char key;
string aux = "";
int numero = 0;

Console.SetCursorPosition(02,02);
Console.WriteLine("Solo números y el ingreso debe ser mayor a 0");
Console.SetCursorPosition(02, 04);
do
{
opcion = Console.ReadKey(true);
key = opcion.KeyChar;
if (key > 47 && key < 58)
{
Console.Write("" + key);
aux += key;
}
if (key == 13)
{
Int32.TryParse(aux, out numero);
if (numero != 0) break;
else
Console.SetCursorPosition(02, 04);
}
} while (true);

Console.SetCursorPosition(02, 07);
Console.Write("Ingresaste...: " + numero);
Console.ReadLine();
}
}
}

Profe, no deseo mejorar tu versión simplemente me parece interesante no mostrar el ingreso si no es un número.-
Espero me ayuden a encontrar la solución.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Validar ingreso de datos en C Sharp
« Respuesta #4 en: Sábado 13 de Julio de 2013, 19:59 »
0
Bueno, existen varias maneras de hacer esto, lo que yo haria es utilizar el mismo codigo ASCII de backspace, que lo que hace es regresar el cursor una posicion, luego escribir un espacio en blanco, y de nuevo regresar el cursor con backspace.

Debes ademas eliminar el ultimo caracter de tu cadena, para lo que utilizamos el metodo Remove de la clase String y la propiedad Lenght para saber la longitud de la cadena.

Tambien podrias, en lugar de usar el ASCI de backspace, posicionarte con coordenadas como lo estas haciendo, aunque es un poco mas de trabajo, si lo deseas hacer asi tienes que decrementar tu posicion en en base a la posicion en la que te encuentres, eso se te quedaria como ejercicio :)

Te dejo el codigo con comentarios para que te quede mas claro.

Código: [Seleccionar]
        static void Main(string[] args)
        {
            Console.Title = " Validar ingreso de datos";

            ConsoleKeyInfo opcion;
            char key;
            string aux = "";
            int numero = 0;

            Console.SetCursorPosition(02, 02);
            Console.WriteLine("Solo números y el ingreso debe ser mayor a 0");
            Console.SetCursorPosition(02, 04);
            do
            {
                opcion = Console.ReadKey(true);
                key = opcion.KeyChar;
                if (key > 47 && key < 58)
                {
                    Console.Write("" + key);
                    aux += key;
                }
                if (key == 13)
                {
                    Int32.TryParse(aux, out numero);
                    if (numero != 0) break;
                    else
                        Console.SetCursorPosition(02, 04);
                }

                // Si pulsamas la tecla Backspace borramos el caracter
                if (opcion.Key == ConsoleKey.Backspace)
                {
                    int longCadena = aux.Length;
                    // Si la longitud de la cadena es mayor que cero,
                    // eliminamos el ultimo caracter, si es igual a
                    // cero, la cadena esta vacia y no hay nada que
                    // eliminar
                    if (longCadena > 0)
                    {
                        aux = aux.Remove(longCadena - 1);
                        // Utilizamos el caracter bakckspace, que regresa
                        // el cursor una posicion, y ponemos un espacio
                        // en blanco para borrar el caracter, como acabamos de
                        // pulsar backspace, el codigo ASCII de esa tecla se
                        // encuentra en keychar, pero tambien seria valido
                        // utilizar directamente el codigo ASCII de backspace
                        // que es 8, forzando una conversion a char de la siguiente
                        // manera: Console.Write("{0} ", (char)8);
                        Console.Write("{0} ", opcion.KeyChar);
                        // Como pusimos un espacio en blanco, necesitamos
                        // regresar el cursor de nuevo un espacio
                        Console.Write(opcion.KeyChar);
                    }
                }
            } while (true);

            Console.SetCursorPosition(02, 07);
            Console.Write("Ingresaste...: " + numero);
            Console.ReadLine();
        }


Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

DanielC#

  • Miembro activo
  • **
  • Mensajes: 39
  • Nacionalidad: ar
    • Ver Perfil
Re:Validar ingreso de datos en C Sharp
« Respuesta #5 en: Domingo 14 de Julio de 2013, 04:23 »
0
Hola Profe.
Perfecto funciona de maravillas, lo voy a aprender como lo hiciste vos, con respecto a hacerlo con las coordenadas no intente antes de postear pero no lo logré.-

Un saludo y hasta la próxima.-
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-