5. MODULÁRNÍ PROGRAMOVÁNÍ
- Unity CRT, SYSTEM, GRAPH, DOS, OVERLAY,
PRINTER
- Unita CRT
- Unita SYSTEM
- Unita GRAPH
- Unita DOS
- Unita OVERLAY
- Unita PRINTER
- Vlastní unity
Tato jednotka obsahuje programové prostředky, které
zajišťují kontrolu režimů obrazovky, řízení systému zobrazení, vstupu z
klávesnice, obsahují podporu práce s okny, barvami a zvuky. Jednotka implementuje řadu
mocných prostředků, které dávají plnou kontrolu nad vzhledem počítače. Jednotka
Crt může být použita v programech, které pracují na počítačích IBM PC, AT, PS/2,
a kompatibilních.
Využití jednotky se definuje v programu v deklaraci
jednotek (uses). Použitím této jednotky se zvyšuje rychlost
výstupních operací, neboť požadavek výstupu je programy adresován přímo BIOSu
nebo programy přímo přistupují do obrazové paměti grafické karty počítače.
V této jednotce je implementována podpora práce s okny na
obrazovce, a to pomocí procedury WINDOW. Okno se dá definovat na
obrazovce na jakékoliv pozici a je určeno souřadnicemi. Tyto souřadnice se vždy
vztahují relativně k aktivnímu oknu. Levý horní roh okna má souřadnice (1,1), tyto
souřadnice má levý horní roh každého nově vytvořeného okna. Vnitřní plocha okna
se chová jako celá obrazovka. V okně se dají vkládat a mazat řádky, posouvat
textem, pohybovat kurzorem apod.
Pokud pracujeme s celou obrazovkou, je tato rozdělena na 80
sloupců a 25 řádků. Na jiných grafických adaptérech však lze nastavit toto
rozdělení i na 40 sloupců a 25 řádků, na EGA a VGA adaptérech lze nastavit režimy
se 43 nebo 50 řádky, případně se 132 sloupci.
Řídící kódy:
- #7 - rozezní zvukový generátor
- #8 - posune kursor doleva o jeden
znak
- #10 - posune kurzor o řádek
dolů ... line feed
- #13 - vrátí kurzor na levý
okraj aktuálního řádku .. carriage return
Konstanty nastavení barev:
Black - černá |
0 |
LightBlue
- světle modrá |
9 |
Blue - modrá |
1 |
LightGreen
- světle zelená |
10 |
Green - zelená |
2 |
LightCyan
- světle modrozelená |
11 |
Cyan - modrozelená |
3 |
LightRed
- světle červená |
12 |
Red - červená |
4 |
LightMagenta
- světle fialová |
13 |
Magenta - fialová |
5 |
Yellow
- žlutá |
14 |
Brown - hnědá |
6 |
White
- bílá |
15 |
LightGray - světle šedá |
7 |
Blink
- blikání |
128 |
DarkGray - tmavě šedá |
8 |
|
|
Konstanty nastavení režimu zobrazení:
- BW40 = 0 - režim 40 řádků a
25 sloupců černobílý na barevném adaptéru
- CO40 = 1 - režim 40 řádků a
25 sloupců barevný na barevném adaptéru
- BW80 = 2 - režim 80 řádků a
25 sloupců černobílý na barevném adaptéru
- CO80 = 3 - režim 80 řádků a
25 sloupců barevný na barevném adaptéru
- MONO = 7 - režim 80 řádků a
25 sloupců černobílý na monochromatickém adaptéru
- FONT8x8 = 256 - režim 43/50
řádků na adaptérech EGA, VGA
Proměnné jednotky CRT:
- LastMode - typu word, používá
se k přechodu z grafického režimu do textového režimu, do této proměnné se
automaticky uloží kód textového režimu, který byl aktuální před inicializací
grafiky
- TextAttr - typu byte, do této
proměnné se ukládá hodnota aktuálního atributu zobrazení nastavená pomocí
procedur TextBackground a TextColor
- DirectVideo - typu boolean, tato
proměnná aktivuje a deaktivuje přímý přístup do obrazové paměti pro příkazy
Write a Writeln; pokud má hodnotu True, budou příkazy Write a Writeln vkládat znaky
přímo do obrazové paměti pomocí rutin jednotky CRT; pokud má hodnotu False, budou se
znaky vkládat do obrazové paměti pomocí funkcí BIOSu (pomalejší způsob,
implicitní nastavení je True)
- WindMin - typu word, uchovává
souřadnice levého horního rohu aktuálního okna vytvořeného na obrazovce,
souřadnice sloupce X je uložena v nižším byte, souřadnice řádku Y se ukládá do
vyššího byte, zjišťují se pomocí funkcí Hi a Lo
- WindMax - typu word, uchovává
souřadnice pravého dolního rohu aktuálního okna vytvořeného na obrazovce,
souřadnice sloupce X je uložena v nižším byte, souřadnice řádku Y se ukládá do
vyššího byte, zjišťují se pomocí funkcí Hi a Lo
- CheckSnow - typu boolean,
aktivuje a deaktivuje tzv. kontrolu sněžení při vkládání znaků přímo do
obrazové paměti; na některých CGA adaptérech totiž dochází k rušení, když se
znaky ukládají do paměti mimo intervaly kmitočtu horizontálního rozkladu (na
ostatních adaptérech k tomuto jevu nedochází); při volbě barevného textového
režimu je hodnota nastavena na True (zápis do obrazové paměti automaticky
synchronizuje)
- CheckEof - typu boolean,
nastavuje způsob interpretace znaku konce souboru; je-li hodnota True, generuje se konec
souboru po stisku kombinace kláves <Ctrl-Z>, je-li hodnota False, nemá stisk
kombinace kláves <Ctrl-Z> žádný účinek (implicitní nastavení je False)
- CheckBreak- typu boolean,
aktivuje a deaktivuje test stisku kombinace kláves <Ctrl-Break>; je-li hodnota
True, stisk této kombinace kláves předčasně ukončí provádění programu, je-li
hodnota False, nemá stisk kombinace kláves <Ctrl-Break> žádný účinek
(implicitní nastavení je True)
Frekvence jednotlivých tónů pro tvorbu hudby:
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
C |
16,4 |
32,7 |
65,4 |
130,8 |
261,6 |
523,3 |
1046,5 |
2093 |
C# |
17.3 |
34,6 |
69,3 |
138,6 |
277,2 |
554,4 |
1108,7 |
2217,5 |
D |
18,4 |
36,7 |
73,4 |
146,8 |
293,7 |
587,3 |
1174,7 |
2349,3 |
D# |
19,4 |
38,9 |
77,8 |
155,6 |
311,1 |
622,3 |
1244,5 |
2489 |
E |
20,6 |
41,2 |
82,4 |
164,8 |
329,6 |
659,3 |
1318,5 |
2637 |
F |
21,8 |
43,7 |
87,3 |
174,6 |
349,2 |
698,5 |
1396,9 |
2793,8 |
F# |
23,1 |
46,2 |
92,5 |
185 |
370 |
740 |
1480 |
2960 |
G |
24,5 |
49 |
98 |
196 |
392 |
784 |
1568 |
3136 |
G# |
26 |
51,9 |
103,8 |
207,7 |
415,3 |
830,6 |
1661,2 |
3322,4 |
A |
27,5 |
55 |
110 |
220 |
440 |
880 |
1760 |
3520 |
A# |
29,1 |
58,3 |
116,5 |
233,1 |
466,2 |
932,3 |
1864,7 |
3729,3 |
H |
30,9 |
61,7 |
123,5 |
246,9 |
493,9 |
987,8 |
1975,5 |
|
Procedury a funkce jednotky:
- Funkce k testování a čtení vstupu z klávesnice:
- KeyPressed - fce - testuje
připravenost znaku ve vyrovnávací paměti klávesnice
- ReadKey - fce - čte jeden znak z
vyrovnávací paměti klávesnice
- Procedury a funkce k programování oken a adresování
obrazovky:
- GoToXY - Proc - nastaví polohu
kurzoru v aktuálním okně na def. souřadnici
- TextMode - proc. - nastaví
textový režim zobrazení
- Window - proc. - definuje
textové okno na obrazovce
- WhereX - fce - vrací
horizontální souřadnici polohy kurzoru
- WhereY - fce - vrací
vertikální souřadnici polohy kurzoru
- Procedury pro mazání obrazovky a jednotlivých řádků:
- ClrScr - proc. - vymaže obsah
aktuálního okna
- ClrEol - proc. - vymaže všechny
znaky od pozice kurzoru do konce řádku
- DelLine - proc. - vypustí
řádek, na kterém je nastaven kurzor
- InsLine - proc. - vloží
prázdný řádek na aktuální pozici kurzoru
- Procedury a funkce pro nastavení barevného ladění a
způsobu zobrazení:
- HighVideo - proc. - zobrazení
vyššího jasu
- Lowideo - proc. - zobrazení
nižšího jasu
- NormVideo - proc. - nastaví
původní atribut zobrazení
- TextBackGround - proc. - nastaví
barvu pozadí
- TextColor - proc. - nastaví
barvu popředí znaku
- Procedury k programování zvukového generátoru:
- Sound - proc. - spustí interní
zvukový generátor
- NoSound - proc. - vypne interní
zvukový generátor
- Ostatní procedury:
- AssignCrt - proc. - propojí
standardní proměnnou Input a Output s jednotkou CRT
- Delay - proc. - zastaví
provádění programu na definovaný počet milisekund
Programy k této unitě:
- Tento program je ukázkou procedur TextColor, TextBackground,
GotoXY a Window. Nastaví barvy obrazovky na fialovou na modrém pozadí a v pravé dolní
čtvrtině obrazovky vytvoří okno s modrozelenou (Cyan) barvou na červeném pozadí (zdrojový kód, exe soubor).
- Tento program je ukázkou procedur TextBackground, ClrEol a
GotoXY. Ukáže na obrazovce přehled všech barev. Každou barvou bude vybarven jeden
řádek (zdrojový kód, exe
soubor).
je základní jednotkou Pascalu a obsahuje všechny
standardní procedury a funkce. Nemusí se deklarovat v klausuli uses,
neboť tuto jednotku používají všechny unity a programy standardně. Jednotka obsahuje
procedury a funkce pro řešení operací vstupně-výstupních, aritmetických,
goniometrických, procedury a funkce pro práci s řetězci, pro dynamické proměnné a
pro práci se soubory.
Procedury a funkce jednotky:
- Aritmetické procedury a funkce: (do této kategorie lze také
zařadit i funkce pro zaokrouhlování čísel, práci s typem word a s ordinálními typy
a funkce pro náhodné generování čísel)
- Abs - fce - vrací absolutní
hodnotu
- Exp - fce - vrací hodnotu
exponenciální funkce
- Ln - fce - vrací přirozený
logaritmus
- Sqr - fce - vrací druhou mocninu
- Sqrt - fce - vrací druhou
odmocninu
- Frac - fce - vrací desetinnou
část čísla
- Int - fce - vrací celočíselnou
část čísla
- Round - fce - zaokrouhluje
číslo
- Trunc - fce - zkrátí real na
integer
- Hi - fce - vrací vyšší bajt
argumentu
- Lo - fce - vrací nižší bajt
argumentu
- Swap - fce - vymění navzájem
vyšší a nižší bajt argumentu
- Odd - fce - testuje lichá
čísla
- Ord - fce - vrací ordinální
hodnotu
- Pred - fce - vrací ordinálního
předchůdce
- Succ - fce - vrací ordinálního
následovníka
- High - fce - vrací nejvyšší
hodnotu rozsahu argumentu
- Low - fce - vrací nejnižší
hodnotu rozsahu argumentu
- Dec - proc. - snižuje hodnotu
proměnné o 1
- Inc - proc. - zvyšuje hodnotu
proměnné o 1
- Random - fce - generuje náhodná
čísla
- Randomize - proc. - inicializuje
generátor Random
- Goniometrické funkce:
- Pi - fce - vrací hodnotu
konstanty Pi
- ArcTan - fce - vypočítá
arkustangens úhlu
- Cos - fce - vypočítá kosinus
úhlu
- Sin - fce - vypočítá sinus
úhlu
- Procedury a funkce pro práci s ukazatelem a adresou:
- Addr - fce - vrací adresu
objektu v paměti
- Ptr - fce - provede převod
formátu adresy
- Assigned - fce - testuje
naplnění hodnoty Ukazatel
- Ofs - fce - vrací adresu ofsetu
prvku v paměti
- Seg - fce - vrací adresu
segmentu prvku v paměti
- TypeOf -
fce - vrací ukazatel na tabulku virtuálních metod
- New - proc. - vytvoří novou
dynamickou proměnnou a nastaví na ni proměnnou typu ukazatel
- GetMem - proc. - vytvoří novou
dynamickou proměnnou dané velikosti a předá adresu bloku do proměnné typu ukazatel
- Dispose - proc. - odstraní
dynamickou proměnnou
- FreeMem - proc. - odstraní
dynamickou proměnnou dané velikosti
- Mark - proc. - nastaví značku v
haldě
- Release -
proc. - uvede haldu do stavu před označením
- CSeg - fce - vrací hodnotu
registru CS
- DSeg - fce - vrací hodnotu
registru DS
- SPtr - fce - vrací hodnotu
registru SP
- SSeg - fce - vrací hodnotu
registru SS
- Procedury a funkce pro práci se soubory:
- IOResult - fce - testuje
úspěšnost operace vstupu a výstupu
- Assign - proc. - přiřadí
jméno externího souboru proměnné typu Soubor
- Append - proc. - otevře
existující soubor pro vkládání na konec
- Reset - proc. - otevře
existující soubor
- Rewrite - proc. - vytvoří a
otevře nový soubor
- Close - proc. - uzavře
otevřený soubor
- BlockRead - proc. - načte jeden
nebo více záznamů do proměnné, čte z netypového souboru
- BlockWrite - proc. - zapíše
jeden nebo více záznamů z proměnné, zapíše do netypového souboru
- Eof - fce - zjistí stav konce
souboru
- EoLn - fce - zjistí stav konce
řádky
- Flush - proc. - vyprázdní
vyrovnávací paměť textového souboru
- SetTextBuf - proc. - nastaví
vyrovnávací paměť textového souboru
- FilePos - fce - zjistí pozici
ukazatele v souboru
- FileSize - fce - zjistí počet
položek v souboru
- Seek - proc. - nastaví ukazatel
v souboru
- SeekEof - fce - zjistí stav
konce textového souboru
- SeekEoLn - fce - zjistí stav
konce řádky v textovém souboru
- Truncate - proc. - zkrátí
velikost souboru na hodnotu odpovídající aktuální pozici
- Erase - proc. - vymaže externí
soubor
- Rename - proc. - přejmenuje
externí soubor
- Procedury pro práci s adresáři:
- GetDir - proc. - vrací
aktuální adresář daného disku
- ChDir - proc. - změní
aktuální adresář
- MkDir - proc. - vytvoří nový
podadresář aktuálního adresáře
- RmDir - proc. - zruší prázdný
podadresář aktuálního adresáře
- Procedury a funkce pro práci se znaky a řetězci znaků:
- Lenght - fce - vrací aktuální
délku řetězce
- Chr - fce - převádí číslo na
znak (podle tabulky ASCII)
- Upcase - fce - převádí malá
písmena na velká
- FillChar - proc. - vyplní
určitý počet za sebou jdoucích bajtů určitou hodnotou (typu Byte nebo Char)
- Concat - fce - zřetězuje
řetězce
- Copy - fce - vyjme podřetězec z
řetězce
- Delete - fce - zruší
podřetězec z řetězce
- Insert - fce - vloží
podřetězec do řetězce
- Pos - fce - zjistí pozici
podřetězce v řetězci
- Str - proc. - převádí číslo
na řetězec (ve smyslu 5 => '5')
- Val - proc. - převádí
řetězec na číslo (ve smyslu '5' => 5)
- Procedury pro programování vstupu a výstupu:
- Read - proc. - pro typové
soubory: čte složku souboru do proměnné; pro textové soubory: čte jednu nebo více
hodnot do jedné nebo více proměnných
- Readln - proc. - jako Read, pak
skočí na další řádek v souboru
- Write - proc. - pro typové
soubory: zapíše proměnnou do složky souboru; pro textové soubory: zapíše jednu nebo
více hodnot do souboru
- Writeln - proc. - jako Write, pak
zapíše značku konce řádky do souboru
- Ostatní procedury a funkce:
- Break - proc. - ukončí
provádění cyklů for, while a repeat
- Continue - proc. - opakuje
provádění cyklů for, while a repeat
- Exit - proc. - ukončí
provádění bloku programu
- Halt - proc. - ukončí
provádění programu a vrací řízení oper. systému
- Exclude - proc. - vyjme prvek z
množiny
- Include - fce - vloží prvek do
množiny
- MaxAvail - fce - vrací velikost
největšího souvislého volného bloku paměti v haldě
- MemAvail - fce - vrací
množství volné paměti v haldě
- SizeOf - fce - vrací velikost
argumentu v bajtech
- Move - proc. - zkopíruje bajty
ze zdrojové adresy na cílovou adresu
- ParamCount - fce - vrací počet
parametrů, které byly programu předány příkazovým řádkem při spuštění
- ParamStr - fce - vrací určený
parametr příkazové řádky
- RunError - proc. - zastaví
vykonávání programu
Tato jednotka v sobě implementuje knihovnu více než 50
grafických procedur a funkcí, které využívají všech možností grafické karty
počítače. Řízení grafické karty v Pascalu zajišťují grafické ovladače, které
jsou implementovány v grafických knihovnách se standardní příponou .BGI.
Standardně dodávané knihovny dokáží ovládat grafické karty typů CGA,
EGA, Hercules, ATT400, MCGA,
VGA a IBM-8514. Následující výpis ukazuje ovladače
i typy adaptérů:
- Cga.bgi
- ovladač pro grafické adaptéry CGA a MCGA
- Egavga.bgi
- ovladač pro grafické adaptéry EGA a VGA
- Herc.bgi
- ovladač pro grafický adaptér Hercules
- Att.bgi
- ovladač pro grafický adaptér AT&T 6300 (400 řádků)
- PC3270.bgi
- ovladač pro grafický adaptér IBM 3270 PC
- IBM8514.bgi
- ovladač pro grafický adaptér IBM-8514
Procedury a funkce jednotky:
- Procedury a funkce pro inicializaci grafického systému:
- DetectGraph - proc. - otestuje
grafické zařízení počítače a zvolí správný grafický ovladač a režim
- InitGraph - proc. - inicializuje
grafický systém a nastavuje grafický režim adaptéru
- ClearDevice - proc. - smaže
grafickou obrazovku a připraví ji na kreslení
- CloseGraph - proc. - uzavře
grafický režim a předá zpět řízení textovému režimu
- GetDriverName - fce - vrací
řetězec, ve kterém je uložen název aktuálního grafického ovladače
- InstallUserDriver - fce -
instaluje nový grafický ovladač do tabulky ovladačů BGI
- RegisterBGIDriver - fce -
zapíše grafický ovladač do tabulky ovladačů BGI
- GetGraphMode - fce - vrací
aktuální grafický režim
- GetMaxMode - fce - vrací
maximální hodnotu kódu grafického režimu dostupnou pro daný grafický ovladač
- GetModeName - fce - vrací
interní jméno grafického režimu
- GetModeRange - proc. - vrací
hodnotu nejvyššího a nejnižšího kódu grafického režimu pro daný grafický
ovladač
- GraphDefaults - proc. - nastaví
základní parametry grafického systému, které se použijí ihned po inicializaci
grafiky procedurou InitGraph
- SetGraphMode - proc. - nastaví
grafický režim a smaže obrazovku
- RestoreCrtMoce - proc. - obnoví
předchozí textový režim, nastavený před inicializací grafiky
- Funkce k vyhodnocení chyb grafického systému:
- GraphErrorMsg - fce - vrací
řetězec chybového hlášení, který přísluší chybovému kódu
- GraphResult - fce - vrací
chybový kód poslední provedené grafické operace
- Procedury a funkce k řešení barevného ladění programů:
- SetBkColor - proc. - nastavuje
barvu pozadí
- GetBkColor - fce - vrací
číselnou hodnotu aktuální barvy pozadí
- SetColor - proc. - nastavuje
barvu popředí pro kreslení čar, kružnic a jiných obrazců
- GetColor - fce - vrací
číselnou hodnotu barvy popředí nastavené pro kreslení
- GetMaxColor - fce - vrací
nejvyšší hodnotu kódu barvy, která se může použít v argumentu procedury SetColor
pro daný grafický režim
- SetPalette - proc. - provádí
změnu jedné barvy v paletě
- GetPalette - proc. - vrací
aktuální paletu barev a její velikost
- SetAllPalette - proc. - mění
všechny barvy palety podle definice v parametru
- SetRGBPalette - proc. - provádí
změnu palety barev na adaptérech IBM-8514 nebo VGA
- GetDefaultPalette - fce - vrací
datovou strukturu, která obsahuje základní nastavení registrů palety barev v
okamžiku inicializace grafického režimu
- GetPaletteSize - fce - vrací
počet barev v paletě
- Funkce ke zjišťování souřadnic grafického ukazatele:
- GetX - fce - vrací aktuální
souřadnici X grafického ukazatele na monitoru
- GetY - fce - vrací aktuální
souřadnici Y grafického ukazatele na monitoru
- GetMaxX - fce - vrací
maximální možnou souřadnici X obrazovky pro daný nastavený grafický ovladač a
režim
- GetMaxY - fce - vraci maximální
možnou souřadnici Y obrazovky pro daný nastavený grafický ovladač a režim
- Procedury pro nastavení souřadnic grafického ukazatele:
- MoveTo - proc. - přemístí
grafický ukazatel do požadovaného bodu
- MoveRel - proc. - posune
grafický ukazatel o relativní vzdálenost vzhledem k aktuálním souřadnicím
- Procedury a funkce pro práci s výřezem grafické obrazovky:
- SetViewPort - proc. - definuje
grafický výřez obrazovky pro práci s grafikou
- GetViewSettings - proc. -
zjišťuje parametry aktuálního výřezu obrazovky
- ClearViewPort - proc. - vymaže
aktuální výřez obrazovky
- ImageSize - fce - vrací počet
byte potřebných k uložení výřezu grafické obrazovky
- GetImage - proc. - uloží obsah
výřezu grafické obrazovky do operační paměti
- PutImage - proc. - z operační
paměti vloží uložený výřez grafické obrazovky zpět na obrazovku
- Procedury ke kreslení čar:
- Line - proc. - nakreslí čáru
jako spojnici dvou bodů
- LineTo - proc. - nakreslí čáru
od pozice grafického ukazatele do daného bodu, souřadnice grafického ukazatele se
přesunou do posledního bodu kreslené čáry
- LineRel - proc. - nakreslí
čáru od pozice grafického ukazatele do bodu, daného relativními souřadnicemi,
souřadnice grafického ukazatele se přesunou do posledního bodu kreslené čáry
- Procedury nastavení kreslení čar:
- SetLineStyle - proc. - nastavuje
způsob kreslení čar
- GetLineSettings - proc. - vrací
aktuální vzor a sílu čáry nastavenou procedurou SetLineStyle
- SetWriteMode - proc. - nastavuje
režim zápisu grafických obrazců na obrazovku
- Procedury ke kreslení pravo- a mnohoúhelníků:
- Rectangle - proc. - nakreslí
pravoúhelník
- Bar - proc. - nakreslí
pravoúhlý sloupec aktuálním typem výplně a aktuální barvou
- Bar3D - proc. - nakreslí
pravoúhlý trojrozměrný sloupek aktuálním typem výplně a aktuální barvou
- DrawPoly - proc. - nakreslí
mnohoúhelník
- FillPoly - proc. - nakreslí a
vyplní mnohoúhelník definovaným typem výplně
- Procedury ke kreslení kružnic, elips a výsečí:
- Circle - proc. - nakreslí
kružnici
- Art - proc. - nakreslí kruhový
oblouk s parametry: počáteční oblouk, koncový oblouk, střed
- PieSlice - proc. - nakreslí a
vyplní kruhovou výseč
- Ellipse - proc. - nakreslí
eliptický oblouk
- FillEllipse - proc. - nakreslí a
vyplní elipsu
- Sector - proc. - nakreslí a
vyplní eliptickou výseč
- GetArcCoords - proc. - vrací
souřadnice posledního vydaného příkazu Arc nebo Ellipse
- SetAspectRatio - proc. - provede
změnu poměru stran (a tím aktuálního korekčního faktoru pro kreslení kružnic,
elips a jiných)
- GetAspectRatio - proc. - vrací
efektivní rozlišení grafické obrazovky, ze kterého lze vypočítat poměr stran X:Y
- Procedury k definování výplní obrazců:
- SetFillPattern - proc. -
nastavuje způsob vyplňování obrazců
- SetFillStyle - proc. - nastavuje
předdefinovaný vzor výplně a její barvu
- SetGraphBufSize - proc. -
umožňuje měnit velikost paměti, která je k dispozici pro realizaci výplní obrazců
- FloodFill - proc. - zaplní
ohraničenou oblast aktuálním typem výplně
- GetFillPattern - proc. - vrací
typ výplně, nastavený naposledy procedurou SetFillPattern
- GetFillSettings - proc. - zjistí
aktuální nastavení typu a barvy výplně pomocí procedury SetFillStyle
- Procedury a funkce pro psaní textu:
- OutText - proc. - zobrazí
textový řetězec v grafickém režimu na aktuální pozici kurzoru
- OutTextXY - proc. - zobrazí
textový řetězec v grafickém režimu na pozici dané souřadnicemi X a Y
- SetTextJustify - proc. -
nastavuje způsob zarovnávání textu v grafickém režimu
- SetTextStyle - proc. - nastavuje
textový font, výšku písma a směr psaní textu
- SetUserCharSize - proc. -
nastavuje velikost znaků podle požadavků programátora
- GetTextSettings - proc. - vrací
aktuální textový font, výšku písma, směr psaní textu a způsob zarovnávání
textu v grafickém režimu
- TextHeight - fce - vrací
aktuální výšku nastaveného typu písma
- TextWidth - fce - vrací
aktuální šířku nastaveného typu písma
- InstallUserFont - fce - instaluje
nový textový font, který není standardní součást prostředí Borland Pascalu
- RegisterBGIFont - fce - zapíše
nový textový font do tabulky fontů
Tato jednotka obsahuje procedury a funkce pro přímou
komunikaci běžící aplikace a operačního systému a procedury a funkce, které
řeší standardní operace operačního systému.
Procedury a funkce jednotky
- Funkce ke zjišťování stavu disku:
- DiskFree - fce - vrací počet
volných byte na definované diskové jednotce
- DiskSize - fce - vrací počet
všech byte na definované diskové jednotce
- Procedury a funkce pro práci se soubory a adresáři:
- FExpand - fce - doplní jméno
diskového souboru na úplnou definici včetně přístupové cesty
- FSplit - fce - rozloží
definiční řetězec souboru na přístupovou cestu k souboru, jméno souboru a na
příponu souboru
- FindFirst - proc. - vyhledá v
adresáři první výskyt definovaného souboru
- FindNext - proc. - vyhledá
další výskyt souboru v adresáři podle definice, vykonané při posledním volání
procedury FindFirst
- FSearch - fce - vyhledá soubor v
seznamu adresářů
- GetFAttr - proc. - vrací
atributy diskového souboru
- SetFAttr - proc. - nastavuje
atributy diskového souboru
- GetFTime - proc. - vrací datum a
čas poslední aktualizace souboru
- SetFTime - proc. - nastavuje
datum a čas poslední aktualizace souboru
- PackTime - proc. - převádí
datum a čas na typ longint o velikosti 4 byte
- UnpackTime - proc. - převádí
datum a čas z typu longint na rozbalený tvar
- Stavové procedury a funkce (nastavují parametry operačního
systému a definují jeho vlastnosti):
- DosExitCode - fce - vrací
návratový kód podřízeného procesu
- DosVersion - fce - vrací číslo
verze operačního systému
- GetVerify - proc. - vrací stav
nastavení verifikace v operačním systému
- SetVerify - proc. - nastavuje
verifikaci v operačním systému
- GetCBreak - proc. - vrací stav
nastavení testu stisku kláves Ctrl-Break v operačním systému
- SetCBreak - proc. - nastavuje
test stisku kláves Ctrl-Break v operačním systému
- EnvCount - fce - vrací počet
řetězcových konstant v systémovém prostředí procesu spuštěného v DOSu
- EnvStr - fce - vrací řetězec
přečtený ze systémového prostředí
- GetEnv - fce - vrací hodnotu
definované systémové proměnné
- GetIntVec - proc. - vrací adresu
uloženou v definovaném vektoru přerušení
- SetIntVec - proc. - nastaví
defínovaný vektor přerušení na novou adresu
- SwapVectors - proc. - provádí
výměnu vektorů přerušení
- Procedury pro práci se systémovým datem a časem:
- GetDate - proc. - vrací
aktuální datum nastavené v operačním systému
- SetDate - proc. - nastavuje datum
v operačním systému
- GetTime - proc. - vrací
aktuální čas nastavený v operačním systému
- SetTime - proc. - nastavuje čas
v operačním systému
- Proceduty pro spouštění a řízení externích programů
(napsaných v Pascalu nebo v jiném jazyku):
- Exec - proc. - spustí program
definovaný příkazovým řádkem
- Keep - proc. - ukončí
provádění programu, jeho kód ponechá v operační paměti
- Procedury pro volání jádra systému a přerušení programu
BIOS:
- Intr - proc. - vyvolá
definované přerušení
- MsDos - proc. - vyvolá
přerušení 21H a provede definovanou službu jádra operačního systému
Tato jednotka obsahuje procedury a funkce pro tvorbu
překryvných modulů programu. A co rozumíme překryvným modulem programu? Jsou to
části programu, které sdílejí v operační paměti stejnou oblast určenou pro kód
programu. Tato oblast paměti, která je pro překryvné moduly vyhrazena, se v průběhu
vykonávání programu naplňuje jiným kódem, za běhu programu tedy dochází v této
oblasti k překrývání kódu.
Z předchozího vyplývá, že používání překryvných
modulů snižuje nároky programů na operační paměť počítače,stejně tak jako
umožňuje spouštět programy, jejich velikost kódu přesahuje velikost operační
paměti. Při využití překryvných modulů se do paměti zavádí pouze část kódu
programu a překryvné moduly se postupně nahrávají z disku do vyhrazené paměti,
určené právě pro překryvné moduly.
Více se o tomto můžeme dovědět např. z [2].
Tato jednotka se využívá k propojení výstupů programu
na tiskárnu. Obsahuje deklaraci textového souboru Lst, který se
přiřadí k zařízení LPT1. Poté se může směrovat výstup programu
na tiskárnu pomocí příkazu
writeln(Lst,'Vystup na
tiskarnu.'); |
Jednotky jsou základy modulárního programování v Pascalu
a lze je používat pro vytvoření vlastních knihoven a pro rozdělení dlouhých
programů do logicky souvisejících modulů.
Již hotová jednotka, tedy přeložená pekladačem Borland
Pascalu, je uložena ve strojovém kódu. Procedury a funkce, které jsou z jednotky
využívány, se vkládají do kompilátoru Pascalu přímo v binárním tvaru.
Využívání jednotek v programech tedy zkracuje dobu překladu.
A dále. Jednotky, které si sami vytvoříme, nemusí
obsahovat procedury, funkce a jiné prvky, které využijeme pouze v jednom programu.
Mohou zahrnovat určité spektrum problémů, které chceme pomocí procedur a funkcí v
jednotkách řešit. Takto vytvořené knihovny potom můžeme s úspěchem využívat
celou skupinou programů. Další důležitý význam mají knihovny v tom smyslu, že
rozdělují obsáhlý program do tématických modulů. Jednotlivé jednotky řeší potom
např. vstupní operace, výstupní operace, práci s grafikou (pokud např. vytváříme
pěkné uživatelské grafické rozhraní programu), apod. Důsledkem tohoto rozdělení
obsáhlého programu na dílčí jednotky je také v určitých případech vyřešení
problému s velkým množstvím segmentu pro kód programu (globálních proměnných,
nových námi definovaných datových typů apod.). Jeden segment pro kód programu může
nabýt maximální velikosti 64 kB. Pokud program rozdělíme do jednotek, překladač pro
každou využívanou jednotku vytváří nový segment pro kód programu.
Vlastní jednotky vytváříme přesně podle definované
struktury:
unit Identifikátor;
{ Záhlaví jednotky } |
|
interface
{ Veřejné symboly } |
uses
{ Klauzule
uses } |
const
{ Konstanty } |
type
{
Typy } |
var
{ Proměnné } |
procedure
{ Procedury } |
function
{ Funkce } |
|
implementation
{ Soukromé symboly } |
uses
{ Klauzule uses } |
label
{ Návěští } |
const
{
Konstanty } |
type
{ Typy } |
var
{ Proměnné } |
procedure
{ Procedury } |
function
{ Funkce } |
|
begin
{ Inicializace } |
příkazy;
{ Příkazy } |
end. |
Nyní si jednotlivé části jednotky podrobněji probereme:
- Hlavička jednotky -
- Hlavička jednotky začíná klíčovým slovem unit,
za nímž následuje jméno jednotky, kterým se odkazujeme na jednotku v hlavním
programu v klauzuli uses. Toto jméno musí být jedinečné, nesmí se shodovat se
jménem jiných jednotek.
- Část interface -
- V částí interface se za klíčovým slovem uses
uvádí jednotky, které nová jednotka používá. Také se zde deklarují konstanty,
datové typy, proměnné, procedury a funkce, které jsou veřejné, dostupné
uživatelům jednotky. V této části jsou uvedena pouze záhlaví procedur a funkcí.
Těla procedur a funkcí jsou v implementační části.
- Externí procedury se uvádějí klíčovým slovem
external.
- Procedury a funkce s direktivou inline
uvádějí strojový kód přímo v této části, deklarace a tělo v části
implementation se již neuvádí.
- Deklarace forward není povolena.
- Část implementation -
- V částí interface se za klíčovým slovem uses uvádí jednotky, které nová jednotka používá.
Také se zde deklarují konstanty, datové typy, proměnné, procedury a funkce, které
nejsou veřejné, jsou nedostupné uživatelům jednotky. V této části jsou uvedena
záhlaví procedur a funkcí i s těly těchto procedur a funkcí.
- Inicializační část -
- Inicializační část je poslední část jednotky. Obsahuje
buď vyhrazené slovo end. (žádný inicializační kód), nebo
příkazovou část, která má být vykonána při inicializaci jednotky. Tato
příkazová část je uzavřena mezi vyhrazenými slovy begin a end.
Vlastní jednotky se překládají stejně jako běžné
aplikační programy. Překladač Borland Pascalu sám pozná, kdy překládá aplikaci a
kdy knihovnu. Podle toho také rozlišuje výsledný typ programu: aplikační program má
koncovku EXE, kdežto přeložená knihovna má koncovku TPU.
Při provádění jakýchkoliv změn v části interface
musíte opět přeložit nejen tuto knihovnu, ale také všechny knihovny, které tuto
knihovnu využívají. Pokud však provedete nějakou změnu v části implementation,
nemusíte již ostatní knihovny, které tuto knihovnu využívají, znovu překládat.