Crt - obsługa monitora, klawiatury i głośnika;
MODUŁ Crt
Stałe
Black - kolor czarny;
Blink - "miganie";
Blue - kolor niebieski;
Brown - kolor brązowy;
BW40 - tryb czterdziesto kolumnowy czarno biały;
BW80 - tryb osiemdziesięcio kolumnowy czarno biały;
C40 - tryb czterdziesto kolumnowy kolorowy;
C80 - tryb osiemdziesięcio kolumnowy kolorowy;
CO40 - 40 columns color screen mode;
CO80 - 80 columns color screen mode;
Cyan - kolor cyjan;
DarkGray - kolor ciemno szary;
Font8x8 - wewnętrzny tryb czcionki ROM;
Green - kolor zielony;
LightBlue - kolor jasno niebieski;
LightCyan - kolor jasny cyjan;
LightGray - kolor jasny szary;
LightGreen - kolor jasno zielony;
LightMagenta - kolor jasny magenta;
LightRed - kolor jasno czerwony;
Magenta - kolor magenta;
Mono - tryb monochromatyczny;
Red - kolor czerwony;
ScreenHeight - aktualna wysokość ekranu;
ScreenWidth - aktualna szerokość ekranu;
White - kolor biały;
Yellow - kolor żółty.
Procedury i funkcje
AssignCrt - dołącz plik do CRT;
ClrEol - czyści całą linię od miejsca w którym znajduje się kursor;
ClrScr - czyści ekran;
cursorbig - pokazuje duży kursor;
cursoroff - ukrywa kursor;
cursoron - wyświetla kursor;
Delay - opóźnia wykonywanie programu;
DelLine - usuwa linię w której znajduje się kursor;
GotoXY - przemieszcza kursor w określone miejsce na ekranie;
HighVideo - przełącza w tryb podświetlania;
InsLine - wstawia pustą linię w miejscu pozycji kursora;
KeyPressed - sprawdza czy klawisz jest naciśnięty;
LowVideo - przełącza w tryb małej intensywności kolorów;
NormVideo - powraca do normalnego modus;
NoSound - wyłącza dźwięk;
ReadKey - czyta jeden znak;
Sound - dźwięk systemowy;
TextBackground - ustawia kolor tła;
TextColor - ustawia kolor tekstu;
TextMode - ustawia tryb ekranu;
WhereX - zwraca pozycję X kursora;
WhereY - zwraca pozycję Y kursora;
Window - tworzy nowe okno na ekranie.
Crt to moduł zawierający procedury i funkcje służące do kontroli trybu tekstowego ekranu.
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.
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.
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.
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.
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.
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.
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.
2) CRT
2.1 TextMode(x) zmieniamy styl naszego okna i rozmiaru czcionki. W pole x możemy podać 4 wartości:
CO80 - rozmiar 80x25 standardowy dos
CO40 - rozmiar 40x25
CO80 +font8x8 - rozmiar 80x50
CO40 +font8x8 - rozmiar 40x50
2.2 KeyPressed funkcja sprawdza aktywność klawiatury.
2.3 ClrEol procedura wymazuje znaki od miesca w którym znajduję się kursor do końca linii.
2.4 InsLine procedura wstawia pustą linię w miejsce kursora.
2.5 DelLine procedura usuwa linię w miejscu, w którym znajduję się kursor.
2.6 WhereX funkcja pozycja kursora w osi X.
2.7 WhereY funkcja pozycja kursora w osi Y.
2.8 Window(x,y,xx,yy) procedura tworząca nowe okno, gdzie:
x(0-80), y(0-25) - lewo górny róg okna
xx(0-80), yy(0-25) - prawo dolny róg okna
2.9 GoToXY(x,y) procedura ustawia kursor na pozycji (x,y)
A teraz spójrz jak korzystać z powyższych komend:
* stosowanie komend crt.
Program program_30;
uses crt;
var i, j :integer;
BEGIN
clrscr;
window(20,5,60,6); { 1 }
readln;
window(1,1,80,25); { wracamy do standardowego okna 80x25 }
GoToXY(15,6);
writeln('Pozycja kursora X=',WhereX,' Y=',WhereY);
clrscr;
for i:=1 to 80 do
for j:=1 to 24 do write('*'); { 2 }
GoToXY(33,9);
ClrEol;
readkey;
InsLine;
readkey;
DelLine;
readkey;
TextMode(CO80 +font8x8); { 3 }
readln;
repeat until KeyPressed;
END.
Unit CRT |
Unit CRT (Crt.tpu albo Crt.tpp) dostarcza wiele najczęściej używanych procedur i funkcji, które dają całkowitą kontrolę nad możliwościami komputera.
Procedury i funkcje unitu CRT pozwalają na kontrolę trybów ekranu, rozszerzonymi kodami klawiatury, kolorami, oknami i dźwiękami.
Unit CRT może być wykorzystywany jedynie w programach działających na komputerach w pełni kompatybilnych z IBM PC, AT.
Procedury i funkcje unitu CRT
procedura |
wyświetla plik tekstowy na ekranie. |
|
procedura |
Czyści wszystkie znaki od miejsca, w którym znajduje się kursor do końca linii. |
|
procedura |
Czyści ekran i wyświetla kursor w lewym górnym rogu. |
|
procedura |
powoduje opóźnienie o podaną liczbę milisekund. |
|
procedura |
usuwa linię, w której znajduje się kursor. |
|
procedura |
przesuwa kursor do podanej pozycji na ekranie. |
|
procedura |
ustawia znaki wysokiej intensywności. |
|
procedura |
wstawia pustą linię w wierszu, w którym znajdował się kursor. |
|
funkcja |
sprawdza czy został naciśnięty jakiś klawisz. |
|
procedura |
ustawia znaki niskiej intensywności. |
|
procedura |
ustawia domyślny tryb wyświetlania znaków na ekranie |
|
procedura |
wyłącza dźwięk ze speakera. |
|
funkcja |
pobiera znak z klawiatury. |
|
procedura |
uruchamia dźwięk ze speakera. |
|
procedura |
ustawia kolor tła pod tekstem. |
|
procedura |
ustawia kolor tekstu. |
|
procedura |
ustawia wybrany tryb wyświetlania tekstu. |
|
funkcja |
zwraca współrzędną X położenia kursora. |
|
funkcja |
zwraca współrzędną Y położenia kursora. |
|
procedura |
tworzy na ekranie okno w trybie tekstowym. |
Zmienne unitu CRT
(Boolean) |
|
(Boolean) |
|
(Boolean) |
|
(Boolean) |
|
(Word) |
|
(Byte) |
|
(Word) |
|
(Word) |
AssignCrt (procedura) - unit WinCrt |
Wyświetla plik tekstowy na ekranie.
Deklaracja:
AssignCrt (var f: Text);
Uwagi:
Procedura AssignCrt działa podobnie jak standardowa procedura Assign, jednakże nie przypisuje się nazwy konkretnego pliku. W zamian, plik tekstowy jest skojarzony z ekranem.
Rozwiązanie takie pozwala na szybsze dokonywanie operacji wyjścia (i wejścia) niż jest to możliwe gdy używane są standardowe instrukcje wyjścia (i wejścia).
ClrEol (procedura) - unit Crt i WinCrt |
Czyści wszystkie znaki od miejsca, w którym znajduje się kursor do końca linii, nie przesuwając przy tym kursora.
Deklaracja:
ClrEol
Uwagi:
Wszystkie znaki do końca danej linii ustawiane są jako niewidoczne przy wykorzystaniu aktualnie ustalonych atrybutów tekstu. Tak więc, jeśli tło (TextBackground) nie jest zdefiniowane jako czarne, wszystkie znaki od miejsca, w którym znajdował się kursor, do prawej krawędzi ekranu zmienią kolor na kolor tła.
Procedura ClrEol jest zależna od aktywnego okna. Poniższe linie programu definiują okno i czyszczą linię, w której znajdował się kursor od pozycji (1,1) do prawej krawędzi aktywnego okna (1,60).
Window (1,1,60,20);
ClrEol;
ClrScr (procedura) - unit Crt i WinCrt |
Czyści ekran i wyświetla kursor w lewym górnym rogu.
Deklaracja:
ClrScr
Uwagi:
Wszystkie znaki ustawiane są jako niewidoczne przy wykorzystaniu aktualnie ustalonych atrybutów tekstu. Tak więc jeśli tło (TextBackground) nie jest zdefiniowane jako czarne, cały ekran stanie się koloru tła. Dotyczy to także znaków wyczyszczonych przez ClrEol, InsLine, i DelLine, i pustych linii powstałych w wyniku przesuwania ekranu.
Procedura ClrScr jest zależna od aktywnego okna. Poniższe linie programu definiują okno i czyszczą prostokąt o wymiarach 60x20.
Window (1,1,60,20);
ClrScr;
Delay (procedura) - unit Crt |
Powoduje opóźnienie o podaną liczbę milisekund
Deklaracja:
Delay (liczba_milisekund: Word);
Uwagi:
liczba_milisekund to liczba określająca o ile milisekund ma opóźnić się wykonywanie programu.
Procedura Delay jest przybliżeniem, więc przerwa w programie nie będzie trwać dokładnie tyle ile podano w parametrze liczba_milisekund.
DelLine (procedura) - unit Crt |
Usuwa linię w której znajduje się kursor.
Deklaracja:
DelLine
Uwagi:
Linia, w której znajdował się kursor zostaje usunięta, a wszystkie linie pod nią zostają przesunięte o jedną pozycję do góry (używając standardowej procedury BIOS'u). Na dole dodawana jest nowa linia.
Wszystkie znaki ustawiane są zgodnie z aktualnymi atrybutami tekstu. Tak więc jeśli tło (TextBackground) nie jest ustawione jako czarne, nowa linia będzie jego koloru.
GotoXY (procedura) - unit Crt i WinCrt |
Przesuwa kursor do podanej pozycji na ekranie.
Deklaracja:
GotoXY (X,Y:Byte);
Uwagi:
Górny lewy róg ekranu ma współrzędne (1,1). Gdy projektujesz nowe aplikacje możesz zamiast GotoXY użyć CursorTo. Procedura GotoXY jest zgodna z unitem CRT Turbo Pascal'a dla DOS'a.
HighVideo (procedura) - unit Crt |
Ustawia znaki wysokiej intensywności. (?)
Deklaracja:
HighVideo;
Uwagi:
W CRT TextAttr jest zmienna o wielkości jednego bajta przechowująca obecne ustawienia wideo. Procedura HighVideo ustawia bit intensywności obrazu w zmiennej TextAttr - kolor znaków, czyli przemienia kolory z 0-7 na kolory 8-15.
Zobacz także:
LowVideo
NormVideo
TextBackground
TextColor
InsLine (procedura) - unit Crt |
Wstawia pustą linię w wierszu, w którym znajdował się kursor.
Deklaracja:
InsLine;
Uwagi:
Wszystkie linie poniżej wstawianej przesuwane są o jedną linię w dół (używając standardowej procedury BIOS'u), a ostatni wiersz wychodzi poza ekran.
Wszystkie znaki ustawiane są zgodnie z obecnymi atrybutami tekstu. Tak więc jeśli tło (TextBackground) nie jest ustawione jako czarne, nowa linia będzie jego koloru.
KeyPressed (funkcja) - unit Crt i WinCrt |
Sprawdza czy został naciśnięty jakiś klawisz.
Deklaracja:
KeyPressed: Boolean
Uwagi:
To jaki klawisz został naciśnięty można sprawdzić przy użyciu funkcji ReadKey.
Zwracana wartość:
TRUE (prawda) jeśli klawisz został naciśnięty, FALSE (fałsz) jeśli nie.
LowVideo (procedura) - unit Crt |
Ustawia znaki niskiej intensywności. (?)
Deklaracja:
LowVideo;
Uwagi:
W CRT TextAttr jest zmienna o wielkości jednego bajta przechowująca obecne ustawienia wideo. Procedura LowVideo ustawia bit intensywności obrazu w zmiennej TextAttr - kolor znaków, czyli przemienia kolory z 8-15 na kolory 0-7.
Zobacz także:
HighVideo
NormVideo
TextBackground
TextColor
NormVideo (procedura) - unit Crt |
Ustawia domyślny tryb wyświetlania znaków na ekranie.
Deklaracja:
NormVideo;
Uwagi:
Procedura NormVideo przywraca zmiennej TextAttr jej wartość z początku działania programu (zmienna TextAttr przechowuje aktualne właściwości wyświetlania tekstu).
Zobacz także:
HighVideo
LowVideo
TextBackground
TextColor
NoSound (procedura) - unit Crt |
Wyłącza dźwięk ze speakera.
Deklaracja
NoSound;
Uwagi:
Poniższe linie programu powodują włączenie dźwięku o częstotliwości 440 herców na pół sekundy:
Sound(440);
Delay(500);
NoSound;
Zobacz także:
Sound
ReadKey (funkcja) - unit Crt |
Pobiera znak z klawiatury.
Deklaracja:
Readkey: Char;
Uwagi:
Wciśnięty klawisz nie jest wyświetlany na ekran.
Zwracana wartość:
Funkcja ReadKey przechowuje znak wciśniętego klawisza, lub kod rozszerzony.
Sound (procedura) - unit Crt |
Uruchamia dżwięk ze speakera.
Deklaracja:
Sound (Hz: Word);
Uwagi:
Zmienna Hz jest częstotliwością mającego się wydobyć ze speakera dźwięku. Dźwięk będzie brzmiał nieprzerwanie dopóki nie zostanie wyłączony przez procedurę (NoSound).
Zobacz także:
NoSound
TextBackground (procedura) - unit CRT |
Ustawia kolor tła.
Deklaracja:
TextBackground (Color: Byte);
Uwagi:
Zmienna Color jest wyrażeniem całkowitym z przedziału 0..7, zawierającym pierwsze osiem kolorów tekstu. Procedura TextBackground zmienia 4-6 bit zmiennej TextAttr na wybrany kolor.
Tło wszystkich wyświetlanych po wywołaniu procedury znaków będzie wybranego wcześniej koloru.
TextColor (procedura) - unit CRT |
Ustawia kolor tekstu.
Deklaracja:
TextColor (Color: Byte);
Uwagi:
Zmienna Color jest wyrażeniem całkowitym z przedziału 0..15, zawierającym jeden z kolorów tekstu.
Procedura TextColor zmienia 0-3 bit zmiennej TextAttr na wybrany kolor. Jeśli wartość zmiennej kolor jest większa niż 15 wtedy również bit migotania tekstu (7 bit zmiennej TextAttr) zostaje zmieniony, w przeciwnym wypadku zostaje ustawiony na wartość 0.
Możesz spowodować, że znaki na ekranie będą mrugać (migotać) dodając 128 do wartości zmiennej color. Stała migotania tekstu jest zdefiniowana dla zasady, i w gruncie rzeczy już od wersji Pascal'a 3.0 wystarczy wpisać jakąkolwiek większą licbę niż 15 jako zmienną color by włączyć migotanie tekstu. Kolor wszystkich znaków wyświetlanych po użyciu procedury TextColor będzie wybranego wcześniej koloru.
Zobacz także:
HighVideo
LowVideo
NormVideo
TextBackground
TextMode (procedura) - unit CRT |
Ustawia wybrany tryb wyświetlania tekstu.
Deklraracja:
TextMode (Mode: Integer);
Uwagi:
Gdy wywoływana jest procedura TextMode, obecne okno rozciągane jest na cały ekran, zmienna CRT - DirectVideo jest ustawiana na wartość TRUE (prawda), zmienna CRT CheckSnow jest ustawiana na wartość TRUE (prawda) i jeśli wybrany był kolor tła, czy tekstu zostaje on zapisany w zmiennej LastMode, a ekranowi przywraca się wygląd oryginalny, podobnie jak działaniem procedury NormVideo.
Zmienna LastMode jest inicjalizowana domyślnie za każdym razem, gdy zaczyna działać program.
Wywołanie procedury TextMode z parametrem LastMode (Textmode (LastMode);) powoduje powrót do wcześniej aktywnego trybu wyświetlania. Opcja ta jest szczególnie przydatna, gdy trzeba powrócić do trybu testowego po skończeniu pracy w trybie graficznym.
Wywołanie procedury TextMode z następującym parametrem: TextMode (C80+Font8x8); spowoduje przejście do trybu wyświetlania tekstu w 43 wierszach i 80 kolumnach dla kart EGA albo 50 liniach i 80 kolumnach dla kart VGA z kolorowym monitorem. TextMode (Lo(LastMode)) zawsze wyłącza tryb 43- lub 50- wierszowy i przywraca poprzedni tryb wyświetlania (chyba że nie zmienia trybu wyświetlania); dzieje się to wtedy, gdy wywoła się procedurę z parametrem TextMode (Lo(LastMode)+font8x8);. Takie wywołanie pozostawia bez zmian tryb wyświetlania tekstu a zmienia jedynie ilość wierszy na 43 lub 50.
Jeśli w momencie uruchamiania programu, twój monitor pracuje już w trybie 43- lub 50- wierszowym, tryb ten zostanie zachowany przez "CRT code", a zmienna przechowująca największą dozwoloną liczbę wierszy na ekranie (WindMax) zostanie zainicjalizowana poprawnie.
Oto jak w programie wykorzystać procedurę TextMode, by przywrócić tryb wyświetlania do jego początkowego stanu:
PROGRAM Video;
uses Crt;
var OrigMode: Integer;
BEGIN
OrigMode:=LastMode; _{ Zapamiętuje początkowy tryb }
...
TextMode (OrigMode);
END.
WhereX (funkcja) - unit CRT i WinCRT |
Zwraca współrzędną X położenia kursora.
Deklaracja:
WhereX: Byte
Zwracana wartość:
Jedna współrzędna odpowiadająca pozycji X kursora + 1
WhereY (funkcja) - unit CRT i WinCRT |
Zwraca współrzędną Y położenia kursora.
Deklaracja:
WhereX: Byte
Zwracana wartość:
Jedna współrzędna odpowiadająca pozycji X kursora + 1
Window (procedura) - unit CRT |
Tworzy na ekranie okno w trybie tekstowym.
Deklaracja:
Window (X1, Y1, X2, Y2: Byte);
X1 i X2 są współrzędnymi lewego górnego rogu nowego okna, a X2 i Y2 to współrzędne prawego dolnego rogu. Lewy górny róg nowego okna ma współrzędne (1,1). Najmniejsze możliwe okno może mieć wymiary 1 kolumna - 1 wiersz. Jeśli podane współrzędne są w jakiś sposób błędne, odwołanie do procedury Window Będzie pominięte.
Domyślnie okno ma wymiary (1,1,80,25) dla trybu 25- wierszowego i (1,1,80,43) dla trybu 43- wierszowego, co odpowiada wielkości całego ekranu.
Wszystkie współrzędne ekranu (poza współrzędnymi tworzącymi okno) są zależne od aktywnego okna. Na przykład, GotoXY zawsze umieści kursor z lewym górnym rogu aktywnego okna.
Wiele procedur z unit CRT jest zależnych od aktywnego okna, włączając w to ClrEol, ClrScr, DelLine, GotoXY, InsLine, WhereX, WhereY, Read, ReadLn, Write, WriteLn.
Zmienne WindMin i WindMax przechowują atrybuty obecnego okna. Po wywołaniu procedury Window kursor umieszczany jest zawsze w pozycji (1,1).
CheckBereak (zmienna) - unit Crt i WinCrt |
Sprawdza zakończenie programu przez użytkownika przy pomocy okna CRT (?).
CheckBreak: Boolean = True;
Kiedy CheckBreak przyjmuje wartość PRAWDA (true), użytkownik może zakończyć aplikację w dowolnym momencie: wybierając opcję zamknij w menu programu dwukrotnie klikając na ikonie zamknij naciskając Alt-F4 naciskając Ctrl-Break
Użytkownik może również nacisnąć Ctrl-C lub Ctrl-Break w dowolnym momencie, by zatrzymać działanie aplikacji i powrócić do okna CRT (?).
Wszystkie te możliwości są wyłączone gdy CheckBreak ma wartość FAŁSZ (false).
Przy uruchamianiu CRT przechowuje poprzednią wartość CheckBreak w wektorze przerwania $1B w globalnym wskaźniku zwanym SaveInt1B.
CheckEOF (zmienna) - unit Crt i WinCrt |
Sprawdza pozycję znacznika końca pliku.
CheckEOF: Boolean = False;
Jeśli CheckEOF ma wartość PRWADA (true), to gdy użytkownik zamknie plik wyświetlany na ekranie kombinacją klawiszy Ctrl-Z, zostanie wygenerowany znacznik końca pliku.
Kiedy CheckEOF ma wartość FAŁSZ (false), naciśnięcie Ctrl-Z nie przyniesie rezultatu.
CheckEOF domyślnie ma wartość FAŁSZ (false).
CheckSnow (zmienna) - unit Crt |
Włącza i wyłącza Snow-Checking gdy znaki przechowywane są bezpośrednio w pamięci wideo.
Gdy wybrano kolorowy tryb wyświetlania tekstu, CheckSnow ma wartość PRAWDA (true), a bezpośrednie zapisy z pamięci wideo będą pojawiać się jedynie w trakcie poziomego odświeżania.
Jeśli program działa na nowszych kartach CGA, można ustawić CheckSnow na FAŁSZ (false) już w trakcie uruchamiania programu, po każdym odwołaniu się do procedury TextMode.
Wyłączy to Snow-Checking powodując widoczne przyspieszenie działania programu.
CheckSnow nie działa, gdy zmienna DirectVideo jest ustawiona jako FAŁSZ (false).
DirectVideo (zmienna) - unit Crt |
Włącza i wyłącza bezpośredni dostęp do pamięci dla poleceń Write i WriteLn.
Gdy DirectVideo ma wartość PRAWDA (true), znaki wyświetlane przy pomocy poleceń Write i WriteLn są przechowywane w pamięci wideo i stamtąd przekazywane na ekran, zamiast używania do tego celu poleceń BIOS.
Gdy DirectVideo ma wartość FAŁSZ (false), wszystkie znaki wyświetlane są przy pomocy odwołań do BIOS'u, co znacznie zwalnia szybkość procesu.
Domyślnie DirectVideo ma wartość PRAWDA (true).
Jeśli chcesz by wyświetlanie znaków przebiegało przy pomocy odwołań do BIOS'u, ustaw wartość DirectVideo na FAŁSZ (false) na początku programu i po każdorazowym wywołaniu procedury TextMode.
LastMode (zmienna) - unit Crt |
Za każdym razem gdy wywoływana jest procedura TextMode, obecne atrybuty wyświetlania przechowywane są w zmiennej LastMode
Zmienna LastMode jest inicjalizowana przy rozpoczęciu programu.
TextAttr (zmienna) - unit Crt |
Przechowuje aktualnie wybrane atrybuty wyświetlania tekstu.
Atrybuty wyświetlania tekstu ustawia się poprzez procedury TextColor i TextBackground
Atrybuty te można jednak zmieniać odwołując się bezpośrednio do zmiennej TextAttr.
WindMax i WindMin (zmienne) - unit Crt |
Przechowują współrzędne aktywnego okna.
Zmienne te ustawiane są przez procedurę Window
WindMin określa lewy górny róg okna, WindMax określa lewy dolny róg okna.
Współrzędna X przechowywana jest w młodszym bajcie, Y w starszym.
Na przykład funkcja Lo(WindMin) zwraca współrzędną X lewej krawędzi, a funkcja Hi(WindMax) zwraca współrzędną Y dolnej krawędzi.
Lewy górny róg ekranu ma współrzędne (0,0).
Uwaga:
W przypadku procedury GotoXY lewy górny róg ma współrzędne (1,1).
pomoc Turbo Pascal'a