Crt to moduł zawierający procedury i funkcje służące do kontroli trybu tekstowego ekranu.
Autorem pierwszej wersji dla DOS jest Florian Klämpfl. Moduł został przeniesiony do systemu Linux przez Marka Maya i rozbudowany przez Michaëla Van Canneyta i Petera Vremana. Działa on w konsoli Linuxa xterm i rxvt pod systemem X-Windows. Oba moduły działają identycznie, z wyjątkiem tego, iż pod Linuxem we wczesnej implementacji (wersje kompilatora 0.9.1 i wcześniejsze) moduł CRT oraz w oknach automatycznie czyścił treść okna konsoli przy starcie programu.
Stałe
Stałe kolorów
| Black | 0 |
| Blue | 1 |
| Green | 2 |
| Cyan | 3 |
| Red | 4 |
| Magenta | 5 |
| Brown | 6 |
| LightGray | 7 |
| DarkGray | 8 |
| LightBlue | 9 |
| LightGreen | 10 |
| LightCyan | 11 |
| LightRed | 12 |
| LightMagenta | 13 |
| Yellow | 14 |
| White | 15 |
| Blink | 128 |
Tryby pracy ekranu w DOS:
| Identyfikator | Wartość | Opis |
| bw40 | 0 | 40 kolumnowy, czarnobiały |
| co40 | 1 | 40 kolumnowy, kolorowy |
| bw80 | 2 | 80 kolumnowy, czarnobiały |
| co80 | 3 | 80 kolumnowy, kolorowy |
| mono | 7 | Monochromatyczny |
Inne:
| Identyfikator | Wartość | Opis |
| ScreenWidth | 80 | Domyślna szerokość ekranu |
| ScreenHeight | 25 | Domyślna wysokość ekranu |
Zmienne
CheckBreak : boolean;
Sprawdzanie kombinacji clrl + break. W FPC nie używane.
CheckEOF : boolean;
Sposób reakcji programu na kombinację klawiszy CTRL + Z. W FPC nie używane.
CheckSnow : boolean;
Usuwanie efektu “śnieżenia”. W FPC ne używane.
DirectVideo : boolean;
Jeśli true to wyjście programu jest obsługiwane przez pamięć karty graficznej, w przeciwnym wypadku do tego celu wykorzystywane są przerwania BIOS’u.
LastMode : byte = 3;
Ostatnio używany tryb pracy ekranu.
TextAttr : byte = $07;
Zmienna TextAttr kontroluje atrybuty koloru, które są używane przy zapisie znaków na ekran.
WindMax : word = $184f;
Zmienna przechowująca w starszym bajcie współrzędną Y, a w młodszym współrzędną X, prawego dolnego rogu okna utworzonego przez procedurę Window.
WindMaxX : DWord;
Współrzędna X prawego dolnego rogu okna utworzonego przez procedurę Window.
WindMaxY : DWord;
Współrzędna Y prawego dolnego rogu okna utworzonego przez procedurę Windows.
WindMin : word = $0;
Zmienna przechowująca w starszym bajcie współrzędną Y, a w młodszym współrzędną X, lewego górnego rogu okna utworzonego przez procedurę Window.
WindMinX : word;
Współrzędna X lewego górnego rogu okna utworzonego przez procedurę Window.
WindMinY : word;
Współrzędna Y lewego górnego rogu okna utworzonego przez procedurę Window.
Procedury
AssignCrt
Deklaracja:
procedure AssignCrt(var F : Text);
Opis:
Przypisuje do konsoli plik F. Zapis danych do pliku F zostaje przekierowany do okienka konsoli. Jeśli konsola zawiera okno, wszystko zostanie zapisane w oknie.
ClrEol
Deklaracja:
procedure ClrEol;
Opis:
ClrEol czyści bieżący wiersz poczynając od pozycji kursora aż do końca okna. Kursor nie zmienia swojej pozycji.
Procedura zamazuje (czyści) aktualnie aktywne okno używając koluru ustawionego procedurą TextBackground (jeśli wcześniej nie użyto, okno zastanie zamazane kolorem czarnym), od pozycji kursora aż do prawego, dolnego rogu. Kursor nie zmienia pozycji.
ClrScr
Deklaracja:
procedure ClrScr;
Opis:
Procedura zamazuje (czyści) aktualnie aktywne okno używając koloru ustawionego procedurą TextBackground (jeśli wcześniej nie użyto, okno zostanie zamazane kolorem czarnym) oraz ustawia kursor w lewym, górnym rogu okna.
Przykład:
uses Crt;
begin
WriteLn('Tego napisu nie zobaczysz');
ClrScr; //Czyścimy ekran więc po uruchomieniu tekstu powyżej nie zobaczysz...
ReadLn;
end.
CursorBig (tylko FPC)
Deklaracja:
procedure CursorBig;
Opis:
Tworzy kursor o kształcie dużego prostokąta. Nie zaimplementowane w wersji Linux.
CursorOff (tylko FPC)
Deklaracja:
procedure CursorOff;
Opis:
Wyłącza widok kursora. W wersji Linux nie zaimplementowane.
CursorOn (tylko FPC)
Deklaracja:
procedure CursorOn;
Opis:
Włącza widok kursora. W wersji Linux nie zaimplementowane.
Delay
Deklaracja:
procedure Delay(MS : word);
Opis:
Procedura wstrzymuje wykonanie programu na MS milisekund.
Przykład:
uses Crt;
var
i : byte;
begin
for i:=10 downto 1 do
begin
ClrScr;
GoToXY(30, 11);
WriteLn('Auto destrukcja za: ', i, 's');
Delay(1000); //Wstrzymanie na sekundę wykonanie programu
end;
TextBackground(red);
ClrScr;
GoToXY(35, 11);
WriteLn('BOOM!!!');
Readln
end.
DelLine
Deklaracja:
procedure DelLine;
Opis:
DelLine usuwa bieżący wiersz. Wiersze leżące poniżej zostają przemieszczone w górę o 1 wiersz, a na spodzie bieżącego okna zostaje wstawiony pusty wiersz znaków. Kursor nie zmienia pozycji.
GoToXY
Deklaracja:
procedure GoToXY(X : byte; Y : byte);
Opis:
Procedura ustawia kursor tekstowy w pozycji X, Y względem lewego, górnego rogu okna (1, 1).
Przykład:
uses
Crt;
begin
GoToXY(30, 10);
WriteLn('Tekst na środku');
Readkey;
end.
HighVideo
Deklaracja:
procedure HighVideo
Opis:
HighVideo przełącza wyświetlanie znaków w tryb podwyższonej jasności ustawiając bit wysokiej intensywności koloru w atrybucie wideo.
InsLine
Deklaracja:
procedure InsLine;
Opis:
InsLine wstawia pusty wiersz na bieżącej pozycji kursora. Wiersze leżące poniżej zostają opuszczone o jedną linijkę w dół. co powoduje zniknięcie ostatniego wiersza z okna. Kursor nie zmienia położenia.
LowVideo
Deklaracja:
procedure LowVideo;
Opis:
LowVideo przełącza wyjście tekstu do koloru w normalnej intensywności zerując bit intensywności w atrybucie koloru wideo.
NormVideo
Deklaracja:
procedure NormVideo;
Opis:
NormVideo przełącza na standardowe kolory, odczytane przy starcie z pozycji kursora.
NoSound
Deklaracja:
procedure NoSound;
Opis:
Procedura przerywa generowanie dźwięku wywołane procedurą Sound.
Sound
Deklaracja:
procedure Sound(Hz : word);
Opis:
Procedura generuje dźwięk o określonej przez parametr Hz częstotliwości, z głośniczka płyty głównej (PC Speaker). Dźwięk będzie odgrywany aż do momentu wywołania procedury NoSound. Często stosowany w połączeniu z procedurą Delay. W systemach innych niż Windows procedurą może nie działać.
Przykład:
uses Crt; begin Sound(1500); Delay(2000); NoSound; end.
TextBackground
Deklaracja:
procedure TextBackground(cl : byte);
Opis:
Ustawia kolor cl tła tekstu. cl to wartość z zakresu od 0..7.
TextColor
Deklaracja:
procedure TextColor(cl : byte);
Opis:
Ustawia kolor cl tekstu. cl to wartość z zakresu od 0..15.
TextMode
Deklaracja:
procedure TextMode(Mode : word);
Opis:
Procedura ustawia tryb pracy ekranu DOS.
Window
Deklaracja:
procedure Window(X1 : byte; Y1 : byte; X2: byte; Y2 : byte);
Opis:
Window tworzy okno tekstowe na ekranie konsoli, do którego będzie przesyłany tekst. Współrzędne (X1,Y1) określają lewy górny narożnik tego okna, a (X2,Y2) prawy dolny. Współrzędne te odnoszą się do ekranu, którego lewy górny narożnik znajduje się na pozycji (1,1). Dalsze operacje związane ze współrzędnymi, za wyjątkiem kolejnego wywołania procedury Window, są względem lewego górnego narożnika tego okna.
Funkcje
KeyPressed
Deklaracja:
function KeyPressed : boolean;
Opis:
Funkcja sprawdza czy bufor klawiatury nie jest pusty. Jeśli tak funkcja zwraca true w przeciwnym wypadku false. Ignorowane są klawisze: Shift, Alt oraz Ctrl. Funkcja nie usuwa kodu klawisza z bufora klawiatury.
Przykład:
uses
Crt;
begin
repeat
WriteLn('Nacisnij dowolny klawisz aby zakończyć');
Delay(100);
until KeyPressed;
end.
ReadKey
Deklaracja:
function ReadKey : Char;
Opis:
Funkcja zwraca kod , z bufora klawiatury, wciśniętego klawisza. W przypadku gdy bufor jest pusty, funkcja czeka na wciśnięcie klawisza. Dla klawiszy funkcyjnych i sterujących funkcja zwraca #0, ponowne użycie ReadKey w tym wypadku zwróci właściwy kod klawisza.
Przykład:
uses
Crt;
var
Odp : char = #0;
begin
repeat
Odp := ReadKey;
WriteLn('Kod ASCI klawsza ', Odp, ': ');
WriteLn(ord(Odp));
if Odp = #0 then
begin
Odp := ReadKey;
WriteLn(ord(Odp));
end;
until Odp = #27;
end.
WhereX
Deklaracja:
function WhereX : Byte;
Opis:
Funkcja zwraca współrzędną X pozycji kursora względem lewego, górnego rogu aktywnego okna.
WhereY
Deklaracja:
function WhereY : Byte;
Opis:
Funkcja zwraca współrzędną Y pozycji kursora względem lewego, górnego rogu aktywnego okna.

0 Odpowiedzi do “Crt”