Grupo
Gestión Dinámica de Memoria en C#
Objectivo
1. Leer un archivo de texto y almacenar su contenido en memoria.
2. Mostrar 21 líneas de texto a la vez en la consola.
3. Permitir al usuario desplazarse hacia arriba y hacia abajo con las teclas de flecha.
4. Mostrar un menú en la parte inferior de la pantalla para indicar los controles disponibles.
5. Usar Console.SetCursorPosition, ConsoleColor y Console.Clear para formatear.
6. Salir del programa al presionar la tecla ESC.
Proporcione aquí su lector básico de archivos de texto, que muestra 21 líneas de texto y permite al usuario navegar con las teclas de flecha arriba y abajo, y salir con la tecla ESC.
Consejos:
El lector de archivos de texto debe tener tres métodos:
- ReadFile (lee el archivo de texto y lo almacena en memoria)
- ShowMenu (limpia la consola, establece las líneas superior e inferior de la consola [fila 23], cambia los colores usando Console.BackgroundColor, Console.ForegroundColor, ConsoleColor y Console.SetCursorPosition(column, row). Una vez preparado el menú, recuerde colocar el cursor en la segunda fila).
- ShowFrom (escribe 21 líneas, considerando la posición de la primera línea a escribir)
La lógica principal del programa debe ser la siguiente: ShowMenu → ShowFrom → ReadKey → ShowMenu → ShowFrom → ReadKey...
Ejemplo de ejercicio en C#
Mostrar código C#
using System;
using System.Collections.Generic;
using System.IO;
class TextFileReader
{
static List lines = new List();
static int startLine = 0;
const int maxLines = 21;
static void Main()
{
ReadFile("sample.txt");
ConsoleKey key;
do
{
ShowMenu();
ShowFrom(startLine);
key = Console.ReadKey(true).Key;
if (key == ConsoleKey.DownArrow && startLine + maxLines < lines.Count)
{
startLine++;
}
else if (key == ConsoleKey.UpArrow && startLine > 0)
{
startLine--;
}
} while (key != ConsoleKey.Escape);
}
static void ReadFile(string filePath)
{
if (File.Exists(filePath))
{
lines = new List(File.ReadAllLines(filePath));
}
else
{
Console.WriteLine("File not found!");
Environment.Exit(1);
}
}
static void ShowMenu()
{
Console.Clear();
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(0, 23);
Console.WriteLine(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, 23);
Console.Write("Use UP/DOWN arrows to navigate. Press ESC to exit.");
Console.ResetColor();
Console.SetCursorPosition(0, 1);
}
static void ShowFrom(int start)
{
Console.SetCursorPosition(0, 1);
for (int i = start; i < start + maxLines && i < lines.Count; i++)
{
Console.WriteLine(lines[i]);
}
}
}
Output
//Code Output (Example with "sample.txt"):
Line 1: Introduction to C# Programming
Line 2: Understanding Variables and Data Types
Line 3: Control Flow Statements
...
Line 21: Object-Oriented Programming Concepts
Use UP/DOWN arrows to navigate. Press ESC to exit.
//User presses the down arrow key
Line 2: Understanding Variables and Data Types
Line 3: Control Flow Statements
Line 4: Loops and Iteration
...
Line 22: Working with Collections
Use UP/DOWN arrows to navigate. Press ESC to exit.
Código de ejemplo copiado
Comparte este ejercicio de C#