Hola,
Buscando por Google topas con varias funciones que pueden en teoría echar una mano. En la página Web de Borland se encuentra:
Clearing a console window screen y un poco más adelante en la búsqueda se encuentra:
Clearing the window in a console application.
Ninguna de las técnicas propuestas me han funcionado razonablemente por separado. La primera, sencillamente, no me funciona: se produce una excepción en la que no me ha apetecido adentrarme. La segunda solución ha estado mejor en mis pruebas. Únicamente le faltaba algo que sí daba la primera: situar el cursor al principio de la Consola al terminar de limpiarla...
Así que he hecho un híbrido de ambos códigos y parece que el asunto funciona, si bien se nota cierto "movimiento" en la "barra de scroll" de la Consola que tal vez no convenza a todos..., debido a la técnica que se usa para limpiar la Consola tal como la propone el segundo resultado/solución de que he hablado. Yo por el momento lo dejo tal cual. Tal vez alguien que entienda más que yo pueda ir un poco más allá:
Código Delphi
[-]
program ClubDelphi;
{$APPTYPE CONSOLE}
uses
Windows;
function LimpiarConsola: boolean;
var
i: integer;
handleConsola: LongWord;
coordenadasCursor: TCoord;
infoBufferConsola: TConsoleScreenBufferInfo;
begin
Result := false;
handleConsola := GetStdHandle(STD_OUTPUT_HANDLE);
if handleConsola <> INVALID_HANDLE_VALUE then
begin
GetConsoleScreenBufferInfo(GetStdHandle
(STD_OUTPUT_HANDLE), infoBufferConsola);
for i := 0 to infoBufferConsola.dwSize.Y do
WriteLn;
coordenadasCursor.X := 0;
coordenadasCursor.Y := 0;
Result := SetConsoleCursorPosition
(handleConsola,coordenadasCursor);
end;
end;
begin
Writeln('Un programa de tipo Consola');
Writeln('Pulsa ENTER para limpiar la Consola');
ReadLn;
LimpiarConsola;
Writeln('Pulsa ENTER para finalizar');
Readln;
end.