programmazione
lazarus La unit CRT di Pascal classico per applicazioni console, offre controllo del testo (colori, posizione cursore), input da tastiera e funzioni base (es. clrscr). Ideale per programmi semplici, meno compatibile con sistemi moderni o non-Windows. In Lazarus, utilizzato principalmente per legacy o progetti didattici.
home page

La Unit CRT di Lazarus

Pubblicato il: 8-2-2025

Ultima Modifica: 18-3-2025

L'unit crt in Pascal (Lazarus) fornisce funzioni e procedure per la gestione della console, come la modifica dei colori, il posizionamento del cursore, e la gestione dell'input/output.

Procedure e Funzioni

ClrScr

Descrizione: Pulisce lo schermo della console.

Sintassi: procedure ClrScr;

uses crt;
begin
  ClrScr;
  WriteLn('Schermo pulito!');
end.

GotoXY

Descrizione: Posiziona il cursore alla posizione specificata (X, Y) sullo schermo.

Sintassi: procedure GotoXY(X, Y: Byte);

uses crt;
begin
  GotoXY(10, 5);
  Write('Ciao!');
end.

TextColor

Descrizione: Imposta il colore del testo.

Sintassi: procedure TextColor(Color: Byte);

uses crt;
begin
  TextColor(Red);
  WriteLn('Testo rosso');
  TextColor(White);
end.

TextBackground

Descrizione: Imposta il colore di sfondo del testo.

Sintassi: procedure TextBackground(Color: Byte);

uses crt;
begin
  TextBackground(Blue);
  TextColor(White);
  WriteLn('Sfondo blu, testo bianco');
  TextBackground(Black);
  TextColor(White);
end.

KeyPressed

Descrizione: Restituisce True se un tasto è stato premuto, altrimenti False.

Sintassi: function KeyPressed: Boolean;

uses crt;
begin
  WriteLn('Premi un tasto...');
  repeat until KeyPressed;
  WriteLn('Hai premuto un tasto!');
end.

ReadKey

Descrizione: Legge un carattere dalla tastiera senza visualizzarlo sullo schermo.

Sintassi: function ReadKey: Char;

uses crt;
var
  c: Char;
begin
  WriteLn('Premi un tasto...');
  c := ReadKey;
  WriteLn('Hai premuto: ', c);
end.

Delay

Descrizione: Mette in pausa l'esecuzione del programma per un numero specificato di millisecondi.

Sintassi: procedure Delay(Milliseconds: Word);

uses crt;
begin
  WriteLn('Aspetta 2 secondi...');
  Delay(2000);
  WriteLn('Fatto!');
end.

Sound

Descrizione: Genera un suono alla frequenza specificata.

Sintassi: procedure Sound(Hz: Word);

uses crt;
begin
  Sound(440);  // La nota A4
  Delay(1000);
  NoSound;
end.

NoSound

Descrizione: Disabilita il suono generato da Sound.

Sintassi: procedure NoSound;

uses crt;
begin
  Sound(440);
  Delay(1000);
  NoSound;
end.

WhereX

Descrizione: Restituisce la posizione orizzontale (colonna) del cursore.

Sintassi: function WhereX: Byte;

uses crt;
begin
  GotoXY(10, 5);
  WriteLn('Il cursore è alla colonna: ', WhereX);
end.

WhereY

Descrizione: Restituisce la posizione verticale (riga) del cursore.

Sintassi: function WhereY: Byte;

uses crt;
begin
  GotoXY(10, 5);
  WriteLn('Il cursore è alla riga: ', WhereY);
end.

Window

Descrizione: Definisce una finestra di testo sullo schermo con coordinate (X1, Y1) per l'angolo superiore sinistro e (X2, Y2) per l'angolo inferiore destro.

Sintassi: procedure Window(X1, Y1, X2, Y2: Byte);

uses crt;
begin
  Window(10, 5, 30, 15);
  WriteLn('Questa è una finestra di testo!');
end.

ClrEol

Descrizione: Cancella la riga dalla posizione corrente del cursore fino alla fine della riga.

Sintassi: procedure ClrEol;

uses crt;
begin
  Write('Questa parte rimane.');
  ClrEol;  // Cancella il resto della riga
end.

InsLine

Descrizione: Inserisce una riga vuota alla posizione corrente del cursore, spostando il testo sottostante verso il basso.

Sintassi: procedure InsLine;

uses crt;
begin
  WriteLn('Prima riga');
  WriteLn('Terza riga');
  GotoXY(1, 2);
  InsLine;  // Inserisce una riga vuota
  WriteLn('Seconda riga');
end.

DelLine

Descrizione: Elimina la riga alla posizione corrente del cursore, spostando il testo sottostante verso l'alto.

Sintassi: procedure DelLine;

uses crt;
begin
  WriteLn('Prima riga');
  WriteLn('Seconda riga');
  WriteLn('Terza riga');
  GotoXY(1, 2);
  DelLine;  // Elimina la seconda riga
end.

HighVideo

Descrizione: Imposta il testo in alta intensità (più luminoso).

Sintassi: procedure HighVideo;

uses crt;
begin
  HighVideo;
  WriteLn('Testo ad alta intensità');
  NormVideo;
end.

LowVideo

Descrizione: Imposta il testo in bassa intensità (meno luminoso).

Sintassi: procedure LowVideo;

uses crt;
begin
  LowVideo;
  WriteLn('Testo a bassa intensità');
  NormVideo;
end.

NormVideo

Descrizione: Ripristina l'intensità del testo ai valori predefiniti.

Sintassi: procedure NormVideo;

uses crt;
begin
  HighVideo;
  WriteLn('Testo ad alta intensità');
  NormVideo;
  WriteLn('Testo normale');
end.

TextMode

Descrizione: Imposta la modalità testo del terminale. Può essere utilizzata per cambiare la risoluzione del testo.

Sintassi: procedure TextMode(Mode: Word);

uses crt;
begin
  TextMode(CO80);  // Imposta la modalità testo standard a 80 colonne
  WriteLn('Modalità testo impostata a 80 colonne');
end.

ScreenSize

Descrizione: Restituisce le dimensioni dello schermo in colonne e righe.

Sintassi: procedure ScreenSize(var Columns, Rows: Byte);

uses crt;
var
  Cols, Rows: Byte;
begin
  ScreenSize(Cols, Rows);
  WriteLn('Dimensioni schermo: ', Cols, ' colonne x ', Rows, ' righe');
end.

CursorTo

Descrizione: Sposta il cursore a una posizione specifica (X, Y) rispetto alla finestra corrente.

Sintassi: procedure CursorTo(X, Y: Byte);

uses crt;
begin
  Window(10, 5, 30, 15);
  CursorTo(5, 3);
  Write('Ciao!');
end.

CursorOff

Descrizione: Nasconde il cursore.

Sintassi: procedure CursorOff;

uses crt;
begin
  CursorOff;
  WriteLn('Il cursore è nascosto');
  Delay(2000);
  CursorOn;
end.

CursorOn

Descrizione: Mostra il cursore.

Sintassi: procedure CursorOn;

uses crt;
begin
  CursorOff;
  WriteLn('Il cursore è nascosto');
  Delay(2000);
  CursorOn;
  WriteLn('Il cursore è visibile');
end.