Hola a todos.
El código que les dejo a continuación tiene que ver en principio con las propiedades, que es lo que estoy estudiando en este momento,les sugeriría que me digan si el código(empleando propiedades) es correcto?.-
Además la consulta es para ver si me pueden dar una mano con el siguiente error,
si en "Ingrese nombre...:" aprieto la tecla Tab me acepta el dato como valido,eso no es correcto ¿como puedo solucionarlo?.-
using C = System.Console;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Propiedades
{
class Program
{
static void configuracion()
{
C.Title = "Ejemplo del uso de propiedades en C Sharp";
C.SetWindowSize(70,30);
C.BackgroundColor = System.ConsoleColor.Blue;
C.ForegroundColor = System.ConsoleColor.Yellow;
C.Clear();
}
static void ingDatos()
{
Personas per = new Personas();
byte mLeft = 2, mTop = 2;
while (true)
{
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingrese nombre.....:");
string linea = C.ReadLine();
if (string.IsNullOrEmpty(linea))
{
mTop +=2;
C.SetCursorPosition(mLeft, mTop);
C.Write("El dato es obligatorio... (Pulse una tecla para continuar)");
C.ReadKey();
C.Write(" ");
mTop -= 2;
}
else
{
per.nom = linea;
break;
}
}
mTop += 2;
while (true)
{
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingrese apellido...:");
string linea = C.ReadLine();
if (string.IsNullOrEmpty(linea))
{
mTop += 2;
C.SetCursorPosition(mLeft,mTop);
C.Write("El dato es obligatorio... (Pulse una tecla para continuar)");
C.ReadKey();
C.Write(" ");
mTop -= 2;
}
else
{
per.ape = linea;
break;
}
}
mTop += 2;
while (true)
{
byte n = 0;
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingrese edad.......:");
if (byte.TryParse(C.ReadLine(), out n))
{
per.eda = n;
break;
}
else
{
mTop += 2;
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingreso incorrecto... (Pulse una tecla para continuar)");
C.ReadKey();
C.Write(" ");
mTop -= 2;
}
}
}
public class Personas
{
private string nombre;
private string apellido;
private byte edad;
public string nom
{
get { return nombre; }
set { nombre = value; }
}
public string ape
{
get { return apellido; }
set { apellido = value; }
}
public byte eda
{
get { return edad; }
set { edad = value; }
}
}
static void Main(string[] args)
{
configuracion();
ingDatos();
C.SetCursorPosition(02,08);
C.Write("Pulse una tecla para cerrar la aplicación...");
C.ReadLine();
}
}
}
Un gran saludo.-
Daniel
A la rapida puedes probar asi:
using C = System.Console;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Propiedades
{
class Program
{
static void configuracion()
{
C.Title = "Ejemplo del uso de propiedades en C Sharp";
C.SetWindowSize(70, 30);
C.BackgroundColor = System.ConsoleColor.Blue;
C.ForegroundColor = System.ConsoleColor.Yellow;
C.Clear();
}
static bool bValido(string sCadena)
{
sCadena = sCadena.ToUpper();
if (string.IsNullOrEmpty(sCadena)) return false;
for (int i = 0; i < sCadena.Length; i++)
{
char cTemp = Convert.ToChar(sCadena[i]);
int iAscii = (int)cTemp;
if (!bAscii(iAscii)) return false;
}
return true;
}
static bool bAscii(int iAscii)
{
if (iAscii < 65 || iAscii > 91)
{
return false;
}
return true;
}
static void ingDatos()
{
Personas per = new Personas();
byte mLeft = 2, mTop = 2;
while (true)
{
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingrese nombre.....:");
string linea = C.ReadLine();
if (!bValido(linea))
{
mTop += 2;
C.SetCursorPosition(mLeft, mTop);
C.Write("El dato es obligatorio... (Pulse una tecla para continuar)");
C.ReadKey();
C.Write(" ");
mTop -= 2;
}
else
{
per.nom = linea;
break;
}
}
mTop += 2;
while (true)
{
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingrese apellido...:");
string linea = C.ReadLine();
if (!bValido(linea))
{
mTop += 2;
C.SetCursorPosition(mLeft, mTop);
C.Write("El dato es obligatorio... (Pulse una tecla para continuar)");
C.ReadKey();
C.Write(" ");
mTop -= 2;
}
else
{
per.ape = linea;
break;
}
}
mTop += 2;
while (true)
{
byte n = 0;
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingrese edad.......:");
if (byte.TryParse(C.ReadLine(), out n))
{
per.eda = n;
break;
}
else
{
mTop += 2;
C.SetCursorPosition(mLeft, mTop);
C.Write("Ingreso incorrecto... (Pulse una tecla para continuar)");
C.ReadKey();
C.Write(" ");
mTop -= 2;
}
}
}
public class Personas
{
private string nombre;
private string apellido;
private byte edad;
public string nom
{
get { return nombre; }
set { nombre = value; }
}
public string ape
{
get { return apellido; }
set { apellido = value; }
}
public byte eda
{
get { return edad; }
set { edad = value; }
}
}
static void Main(string[] args)
{
configuracion();
ingDatos();
C.SetCursorPosition(02, 08);
C.Write("Pulse una tecla para cerrar la aplicación...");
C.ReadLine();
}
}
}
Solo debe aceptar letras en nombre y apellido, hay que mejorarlo para lo que quieres.
Hola.
Funciona como lo deseado, solo que por el momento no entiendo del todo la lógica, eso no me ocupa de momento.-
Solo 2 cositas,
Citarhay que mejorarlo para lo que quieres.
podrías ser más especifico, la otra, me podrías(an) dar un ejemplo como poner los 2 métodos en otro archivo y como llamarlo?.-(quiero hacer de esto como una biblioteca para utilizar en todos los programas que los pueda aplicar).-
Saludos y muchas gracias por tú tiempo.-
Daniel
Hola.
Al fin viendo un vídeo de aprendiendo c sharp logré dividir el programa en 2 archivos.-
Gracias y espero tú respuesta 43H4FH44H45H4CH49H56H45H.-
Saludos.
Daniel
Con mejorar solo me referia a que reconozca un espacio entre 1er y 2do nombre o 1er y 2do apellido, porque el codigo que puse no acepta espacios.