1 / 47

Knižnica CRT

Knižnica CRT. Správa obrazovky. Knižnica CRT. práca s obrazovkou - ClrEol , ClrScr , nastavenie zobrazovacieho módu - HighVideo , LowVideo , NormVideo , TextMode , práca so zvukom - Delay, NoSound, Sound , práca s farbou - TextBackgruond, TextColor

chika
Download Presentation

Knižnica CRT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Knižnica CRT Správa obrazovky

  2. Knižnica CRT • práca s obrazovkou - ClrEol, ClrScr, • nastavenie zobrazovacieho módu - HighVideo, LowVideo, NormVideo, TextMode, • práca so zvukom - Delay,NoSound, Sound, • práca s farbou - TextBackgruond, TextColor • práca s oknami - Window, DdelLine, InsLine • vstup s klávesnice a jej test -keyPressed, Readkey • kurzorová adresácia - WhereX, WhereY, Gotoxy Pascal 2006

  3. ClrScr; Vymaže obsah obrazovky a umiesti kurzor do ľavého horného rohu. Obrazovka po vymazaní má aktuálnu farbu pozadia. Procedúra sa vzťahuje k aktívnemu oknu. uses Crt; begin Writeln('Hello. Stlač kláves <enter>...'); Readkey; ClrScr; end. Pascal 2006

  4. ClrEol; Vymaže všetky znaky od polohy kurzoru do konca riadku v okne. Pozíciu kurzoru neposunie. Znaky sa nahradia medzerami, ktoré sa zobrazia s aktuálnym atribútom. uses Crt; begin ClrScr; Writeln('Haló, ako je dnes?'); Writeln('Stlač kláves <enter> ...'); Readln; GotoXY(1,2); ClrEol; Writeln ('Je príjemné ťa počuť!'); end. Pascal 2006

  5. Sound (Hz : word); NoSound; Sound() spustí zvukový generátor. Parameter definuje kmitočet, na ktorom bude generátor pracovať. Kmitočet sa udáva v hertzoch. Zvukový generátor pracuje, pokiaľ sa nevyvolá procedúra NoSound. Nosound() - Vypne zvukový generátor. Procedúra sa musí vyvolať, keď chceme ukončiť činnosť zvukového generátoru po predchádzajúcom volaní sound. Pascal 2006

  6. Delay (ms : word); Pozastaví vykonávanie programu na definovaný počet milisekúnd, ktoré udáva parameter ms. Definovaný časový interval sa nedodrží úplne presne, pretože procedúra čas zaokrúhli na strojové cykly. uses Crt; begin Sound(220); {začne pípať } Delay(200); { 200 ms } NoSound; { ukončí pípanie } end. Pascal 2006

  7. TextBackground (color : byte); Nastaví farbu pozadia. Parameter Color je celočíselný výraz, ktorý môže nadobúdať hodnôt 0-7. V knižnici CRT sa ukladá aktuálny atribút zobrazenia textu v premennej TextAttr. Procedúra TextBackground nastavuje bity 4-6 tejto premennej. Pascal 2006

  8. TextColor (color : byte); Nastaví farbu popredia znaku. Parameter Color je celé číslo z intervalu 0..15, ktoré definuje farbu. V knižnici CRT sa ukladá aktuálny atribút zobrazenia textu do premenné TextAttr. Procedúra TextColor nastavuje bity 0-3, pokiaľ je hodnota color väčšia ako 15, potom sa nastavuje aj bit blikania - bit č.7. Pascal 2006

  9. ReadKey; Prečíta znak z klávesnice. Ak bola funkcia KeyPressedtrue pred vyvolaním funkcie ReadKey, funkcia vracia znak okamžite. V opačnom prípade funkcie čaká na stlačenie klávesu. Každý kláves klávesnice generuje kód o veľkosti dva byty. Pre základné klávesy je ASCII kód uložený na prvom generovanom byte, pri rozširujúcich klávesoch je rozšírený kód uložený na druhom generovanom byte. Pascal 2006

  10. ReadKey; uses Crt; var C: Char; begin Writeln('Stlač kláves ... '); C := Readkey; Writeln(' Stlačil si ',C,', jeho hodnota je ',Ord(C),'.'); Writeln('Stlač funkčný kláves ... '); C := Readkey; If c=#0 then c:=readkey; Writeln(' Stlačil si ',C,', jeho hodnota je ',Ord(C),'.'); end. Pascal 2006

  11. KeyPressed: boolean; Vracia logickú hodnotu true, keď bol stlačený ľubovolný kláves na klávesnici. Vo všetkých ostatných prípadoch funkcia vracia logickú hodnotu false. Funkcia neinterpretuje stlačenie rozširujúcich kláves Shift, Alt, NumLocck, Ctrl, a pod.. Stlačený znak zostane vo vyrovnávacej pamäti klávesnice a musí sa vybrať pomocou funkcie ReadKey. uses Crt; begin repeat until KeyPressed; {čaká na stlačenie ... } end; Pascal 2006

  12. GoToXY (X,Y : byte); Nastaví polohu kurzoru v aktívnom okne. Polohu kurzoru definujú parametre X a Y. X definuje súradnicu stĺpca, Y definuje súradnicu riadku. Súradnice ľavého horného rohu okna je (1,1). uses Crt; begin GotoXY(10,10); Writeln('Hello'); end. Pascal 2006

  13. WhereX: byte; WhereY: byte; Vracia horizontálnu a vertikálnu súradnicu X a Y polohy kurzoru, stĺpca, vzhľadom k aktuálnemu oknu. uses Crt; begin Writeln; Writeln; Write('Táto veta je na #'); Writeln(WhereX, '. stĺpci v okne.'); Writeln(WhereY, '. riadku okna.'); end. Pascal 2006

  14. Knižnica DOS

  15. Knižnica DOS • Základné procedúry a funkcie • Práca so súbormi a diskami • Stavové procedúry a funkcie Pascal 2006

  16. DOS – základné prvky • spracovanie dátumu a  času - GetDate, GetFTime, GetTime, PackTime, SetDate, SetFTime, SetTime, UnpackTime • riadenie behu programu a komunikácia so systémom - exec, keep, SwapVectors, DosExitCode, • ostatné - GetBreak, SetBreak Pascal 2006

  17. GetDate (var rr, mm, dd, dow : word ); Vracia aktuálny dátum nastavený v operačnom systéme. • Parameter rr môže byť v rozsahu 1980..2099, • Mm môže byť v rozsahu 1..12, • Dd v rozsahu 1..31, • Dow - DayOfWeek v rozsahu 0..6, pričom týždeň začína nedeľou, ktorej prináleží hodnota 0. Pascal 2006

  18. GetDate - príklad uses Dos; const days : array [0..6] of String[9]= ('Nedeľa', 'Pondelok', 'Utorok', 'Streda', 'Štvrtok', 'Piatok', 'Sobota'); var y, m, d, dow : Word; begin GetDate(y,m,d,dow); Writeln('Dnes je ',days[dow],',',m:0,'/',d:0,'/',y:0); end. Pascal 2006

  19. PackTime (var DT : DateTime; var Time : longint ); Vykoná konverziu údaju dátumu a času na záznam o veľkosti 4 byte. Typ prvého parametra je definovaný v knižnici DOS takto type DateTime = record Year, Month, Day : word; Hour, Min, Sec : word; end; DT je parametrom volania procedúry a definuje časový údaj. Parameter Time je výstupným parametrom a vracia komprimovaný údaj s veľkosťou 4 byte. Pascal 2006

  20. UnpackTime (Time : longint; var DT : DateTime); Vykoná konverziu záznam s veľkosťou 4 byte na údaj typu dátumu a času. Typ druhéhoparametra je definovaný v knižnici DOS takto type DateTime = record Year, Month, Day : word; Hour, Min, Sec : word; end; Parameter Time je vstupným parametrom a obsahuje komprimovaný údaj s veľkosťou 4 byte. DT je výstupným parametrom volania procedúry do ktorého sa ukladá časový údaj v definovanom tvare. Pascal 2006

  21. Exec (Path, CmdLine : string); Spustí program pomocou systémového interpreta príkazov. Názov programu je definovaný parametrom Path, príkazový riadok parametrom CmdLine. Procedúra Exec nemení stav pridelení operačnej pamäti. Spúšťanému programu musí stačiť dostupná pamäť haldy. Pokiaľ procedúra neprebehne korektne, premenná DosError sa nastaví na nenulovú hodnotu, vo väčšine prípadov je to hodnota 8. Pascal 2006

  22. Spustenie programu {$M $4000,0,0 } { 16K stack, bez heapu } uses Dos; var PrgName, CmdLine: string; begin Write('Zadaj názov programu včítane cesty: '); ReadLn(PrgName); Write('Parameter volaného programu : '); ReadLn(CmdLine); WriteLn('Teraz by sa mal vykonať ...'); SwapVectors; Exec(PrgrName, CmdLine); SwapVectors; WriteLn('...návrat späť '); ifDosError <> 0 then Write('Chyba #', DosError) else Write('kod návratu = ',DosExitCode); end. Pascal 2006

  23. Keep (ExitCode : word); Ukončí vykonávanie programu, ale jeho kód ponechá v operačnej pamäti. Po vykonaní procedúry zostáva kód ukončeného programu v operačnej pamäti včítane dátového segmentu a segmentu zásobníku. V programoch, ktoré využívajú procedúru Keep je nutné definovať maximálnu veľkosť haldy pomocou direktívy prekladača $M. Parameter procedúry definuje návratový kód procesu, ktorý je možné vyhodnotiť v nadriadenom procese. Procedúra sa používa pre vytváranie programov TSR - "Terminate and Stay Resident“ Pascal 2006

  24. Práca s diskami a súbormi • informáciao stave diskových jednotiek -DiskFree, DiskSize • vyhľadávanie súborov - FindFirst, FindNext, Fsearch • operácie nad atribútmi súboru - GetFAttr, SetFAttr • doplnenie alebo rozloženie mena súboru - Fexpand, Fsplit Pascal 2006

  25. DiskFree (Drive : word) longint; Vracia počet voľných bytov na definovanej diskovej jednotke. Parameter Drive označuje diskovú jednotku, na ktorej sa má funkcia vykonať, 0,1 a:, 2 b: atď. Výsledok funkcie je hodnota typu longint. uses Dos; begin Writeln(DiskFree(0) div 1024, ' kB voľných '); end. Pascal 2006

  26. DiskSize (Drive : word) : longint; Vracia celkovú kapacitu diskovej jednotky v bytoch. Parameter Drive označuje diskovou jednotku, na ktorej sa má funkcia vykonať, pričom 0 je aktuálne jednotka, 1 A, 2 B atď. Výsledok funkcie je typu longint. uses Dos; begin Write(DiskSize(0) div 1024, ' Kbytes capacity'); end. Pascal 2006

  27. FindFirst (Path : string; Attr : word; var S : SearchRec); Vyhľadá v adresári prvý výskyt definovaného súboru. Parameter Path definuje cestu prístupu k adresári a vyhľadávaný súbor. Súbor sa môže definovať úplným menom a rozšírením alebo pomocou masky zostavenej z pomocných znakov „*“ a „?“, pričom „?“ znamená jeden znak a „*“ je vo význame všetko. V prípade, že sa definuje maska súboru, vyhľadá sa prvý súbor, ktorý odpovedá definovanej maske. Pascal 2006

  28. Atribúty súboru alebo adresáru Parameter Attr definuje atribút hľadaného súboru, alebo adresáru: • ReadOnly $01 • Hidden $02 • SysFile $04 • VolumeID $08 • Directory $10 • Archive $20 • AnyFile $3F Pascal 2006

  29. FindNext (var S : SearchRec); Vyhľadá ďalší výskyt definovaného súboru v adresári podľa definície, ktorá sa vykonala pri poslednom volaní procedúry FindFirst. Procedúra nadväzuje na procedúru FindFirst a pokračuje v hľadaní ďalších výskytov definovaného súboru v adresári. Výsledok hľadania sa vráti vo formáte záznamu, ktorý sa definuje ako : type SearchRec = record Fill: array[1..21] of byte; Attr: byte; Time: longint; Size: longint; Name: string[12]; end; Pascal 2006

  30. Findfirst, findnext var DirInfo: SearchRec; begin FindFirst('*.PAS', Archive, DirInfo); while DosError = 0 dobegin ´[<>18] Writeln(DirInfo.Name); FindNext(DirInfo); end; end. Pascal 2006

  31. DOS – stavové prvky • nastavenie verifikácie v operačnom systéme - GetVerify, SetVerify • ošetrenieprerušenia -Intr, MsDos, GetIntVec, SetIntVec • identifikácia systému - DosVersion • prístup na systémové deklarácie premenných - EnvCount, EnvStr, GetEnv, Pascal 2006

  32. EnvCount: integer;EnvStr (Index : integer) : string;GetEnv (EnvVar : string) : string; Vracia počet reťazcových konštánt v systémovom prostredí operačného systému MS-DOS (SET). Výsledok funkcie je typu integer. Funkcia spočíta všetky reťazce v segmente systémového prostredia. Každý reťazec je v systémovom prostredí uložený vo formáte : premenná = hodnota a je ukončený znakom null. Reťazce zo systémového prostredia je možné vybrať pomocou funkcie EnvStr. Pascal 2006

  33. Knižnica Graph

  34. Unit Graph V jednotke Graph je implementovaná úplná knižnica podprogramov grafiky na rôznych úrovniach, od vysoko úrovňových až k bitovo orientovaným rutinám. Podprogramy vedia pracovať s rôznymi druhmi písma, ktorých veľkosť je možné modifikovať. Súbory BGI Pascal 2006

  35. InitGraph a CloseGraph V grafickom programe identifikuje procedúra InitGraph technické prostriedky grafiky, zavedie a inicializuje príslušný grafický riadiaci program, nastaví systém do grafického režimu a potom predá riadenie volajúcemu podprogramu. Procedúra CloseGraph zruší riadiaci program grafiky z pamäti a obnoví predchádzajúci režim zobrazovacej jednotky. Pascal 2006

  36. CrtMode – restore a set Podprogramy RestoreCrtMode a SetCrtMode slúžia k prepínaniu medzi textovým a grafickým režimom. Po inicializácii jednotky procedúrou InitGraph, sa zvolí správny typ monitoru pre požadovaný riadiaci program a režim. Podprogramy jednotky umožňujú vykonávať autodetekciu grafického hardware, v tomto prípade sa nastaví režim s najvyššou kvalitou zobrazenia. Pascal 2006

  37. Move-, Line-, OutText Grafické režimy nepracujú s kurzorom, ale s tzv, grafickým ukazovateľom alebo grafickým kurzorom. Grafický ukazovateľ je neviditeľný. V grafických režimoch sa ukazovateľ nastaví na posledný bod kreslenej čiary, podľa použitej grafickej procedúry. Pre nastavenie pozície ukazovateľa je v grafických režimoch k dispozícii procedúra MoveTo a má rovnaký význam ako procedúra GotoXY v textovom režime. Aktuálny ukazovateľ posunujú len tie procedúry, ktoré ho používajú ako MoveTo, MoveRel, LineTo, LineRel, alebo OutText. Pascal 2006

  38. SetTextStyle, OutTextXY V grafických režimoch je možné rovnako pracovať s textami. Sú k dispozícii dva základné druhy písma : • bitovo mapované písmo v matici 8x8 bitov • úsečkové písmo, ktoré sa definuje sadou vektorov kreslenia písma Úsečkové typy písma sú výhodné pre kreslenie veľkých znakov, pri zväčšovaní a zmenšovaní písma. Naopak bitovo mapované písmo je vhodné pre zobrazenie menších znakov. Nastavenie typu písma sa môže vykonať procedúrou SetTextStyle. Výstup grafického textu sa realizuje procedúrou OutTextXY. Pascal 2006

  39. GetImage, PutImage, viewPort • Ďalšiu skupinu grafických procedúr sú procedúry pre kreslenie a vyplňovanie obrazcov, bodov, čiar, kružníc, oblúkov, elíps, pravouholníkov, polygónov, pruhov, trojrozmerných stĺpcov a kruhových výrezov pre grafy. Je možné nastaviť spôsob kreslenia čiar, vyplnenie stĺpca alebo mnohouholníka. • Na grafickej obrazovke je možné definovať výrez, tzv. ViewPort, ku ktorému sa vzťahuje grafický výstup. Pokiaľ sa ViewPort definuje na obrazovke, ostatné časti obrazovky sú pre grafické procedúry neprístupné. Výrezy časti obrazu je možné taktiež ukladať do pamäti počítače pomocou procedúry GetImage a spätne zobrazovať na obrazovku pomocou procedúry PutImage. Pascal 2006

  40. Pascal 2006

  41. Knižnica Ovrelay

  42. Knižnica OVERLAY Jednotka obsahuje podporu vytvárania rozširujúcich – prekrývaných - modulov programu. Rozširujúce moduly sú časti programu, ktoré zdieľajú v operační pamäti rovnakú oblasť, ktorá je určená pre kód programu. Oblasť pamäti, vyhradená rozširujúcim modulom, sa môže v priebehu vykonávania programu plniť iným programových kódom. Pascal 2006

  43. P1 novýexe programaprekrývanémoduly Pôvodnýexe Samostatné súbory s príponou *.ovr P3 P2 P2 P5 Viac ako 64 Kb P3 P1 P4 P4 Prg P5 Prg Pascal 2006

  44. Moduly knižnice Overlay Rozširujúce – prekrývané - moduly sa môžu ukladať do rozšírenej pamäti počítača (t.j. do pamäti nad 640 KB - EMS). Pri preklade programu, ktorý pracuje s prekrývanými modulmi, prekladač automaticky generuje výstupný modul s príponou „*.OVR“ - overlay. Tento modul potom prináleží hlavnému programu, ktorý sa uloží v súbore s príponou „*.EXE“. Súbor .EXE obsahuje statickú časť kódu programu a súbory .OVR rozširujúci kód. Základné moduly overlay :OvrClearBuf, OvrGetBuf, OvrGetRetry, OvrInit, OvrInitEMS, OvrSetBuf, OvrSetRetry Pascal 2006

  45. Overlay - príklad Program Example; {$F+} Uses Overlay, CRT, Dos, ExInOut, ExPrint; {$O ExInOut} {$O ExPrint} V klauzule uses sa musí vždy ako prvá uvádzať knižnica Overlay. Pokiaľ jednotky nebudú preložené s voľbou {$O+}, bude prekladač generovať chybové hlásenie. Zo štandardných knižníc sa môže používať v rozširujúcich moduloch len knižnica DOS. Obecne platí, že nie je možné v prekrývaných moduloch používať knižnice, ktoré vykonávajú obsluhu prerušenia. Pascal 2006

  46. Knižnica Printer

  47. Knižnica Printer Jednotka Printer obsahuje prepojenie výstupu z programu na tlačiareň. Jednotka deklaruje textový súbor nazvaný LST a priradí ho k zariadeniu LPT1. Bez použitia jednotky nie je možné smerovať výstup na tlačiareň pomocou odkazu na zariadenie LST, bez vlastnej deklarácie súboru LST. V programoch je možné vykonávať všetky odkazy na výstupné zariadenie, napríklad: WriteLn(LST,'Výstup na štandardnú tlačiareň...'); Pascal 2006

More Related