Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/06/2014, 15:36
javidotnet
 
Fecha de Ingreso: mayo-2013
Ubicación: Chaco, Argentina
Mensajes: 45
Antigüedad: 11 años
Puntos: 3
Sonrisa Respuesta: Duda en C#. Programa para calcular calificaciones.

Hola wind7, me alegro que te haya ayudado mi respuesta!
Que hermoso lenguaje Pascal, me trae lindos recuerdos de la facu!
Para borrar la pantalla ya viste el Console.Clear() que usé en el código anterior.
Sí se puede borrar una línea y también limpiarla . Veamos en qué consisten estos dos términos. En Pascal tenemos la instrucción DelLine que borra una línea, pero no tenemos la instrucción ClrLine, para limpiar una línea (en su lugar tenemos ClrEOL). ¿Cuál sería la diferencia?
En Pascal al hacer DelLine se borra toda la línea donde se encuentra el cursor, subiendo una posición las que se encuentren por debajo de ésta.
Pero si en Pascal deseamos limpiar en lugar de borrar, para que las líneas inferiores permanezcan en su lugar; primero debemos posicionar el cursor con GotoXY y luego usar la instrucción ClrEOL:
Código Pascal:
Ver original
  1. GotoXY(0, 0);
  2. ClrEOL;
En .Net podemos remedar todas estas instrucciones y ya que la vamos a implementar hagámoslas mejoradas; por ejemplo en DelLine podríamos especificar un parámetro opcional para la línea a borrar y lo mismo para ClrLine:
Código C#:
Ver original
  1. // Definimos una clase llamada Pascal de tipo estática para referenciarla sin necesidad de crear una instancia de la misma
  2. // Con esta Clase pretendemos simular las instrucciones de nuestro querido Lenguaje Pascal :)
  3. static class Pascal
  4. {
  5.     // Declaramos una función, en este caso con carácter de procedimiento, también estática para poderla usar sin necesidad de una instancia; y con un parámetro opcional
  6.     public static void DelLine(int Line = -1)
  7.     {
  8.         if (Line == -1)    // si no se especifica ningún argumento para el parámetro opcional, entonces usamos la línea actual del cursor
  9.             Line = Console.CursorTop;
  10.  
  11.             Console.MoveBufferArea(0, Line + 1, Console.WindowWidth, Console.WindowHeight - Line - 1, 0, Line);
  12.     } // DelLine
  13.  
  14.     // ídem al comentario de la función anterior
  15.     public static void ClrLine(int Line = -1)
  16.     {
  17.         if (Line == -1)    // ídem al comentario del If de la función DelLine()
  18.             Line = Console.CursorTop;
  19.  
  20.             Console.SetCursorPosition(0, Line);
  21.             Console.Write(string.Format("{0," + Console.WindowWidth.ToString() + "}", " "));
  22.     } // ClrLine
  23.  
  24. } // class Pascal
Ejemplos de uso, supongamos que tenemos la siguiente pantalla:
Código:
Linea #0
Linea #1
Linea #2
Linea #3
Linea #4
Linea #5
y deseamos borrar la número 3, haríamos:
Código C#:
Ver original
  1. Pascal.DelLine(3);
Con lo cual nos quedaría:
Código:
Linea #0
Linea #1
Linea #2
Linea #4
Linea #5
y ahora supongamos que deseamos limpiar la línea número 2:
Código C#:
Ver original
  1. Pascal.ClrLine(2);
Nos quedaría:
Código:
Linea #0
Linea #1

Linea #4
Linea #5
Espero se haya entendido.
¡Saludos cordiales desde Argentina!... con la mirada puesta en Brasil !!!

Última edición por javidotnet; 11/06/2014 a las 15:45