Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Процедура

Читайте также:
  1. III. Процедура защиты выпускной квалификационной работы в Государственной аттестационной комиссии
  2. ВОПРОС 24. НАБЛЮДЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА.
  3. ВОПРОС 25- ФИНАНСОВОЕ ОЗДОРОВЛЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА
  4. ВОПРОС 27. КОНКУРСНОЕ ПРОИЗВОДСТВО КАК ПРОЦЕДУРА БАНКРОТСТВА
  5. ВОПРОС 29. МИРОВОЕ СОГЛАШЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА.
  6. ВОПРОС 32. ВНЕШНЕЕ УПРАВЛЕНИЕ КАК ПРОЦЕДУРА БАНКРОТСТВА
  7. Глава 4 Процедура и основные характеристики психологического
  8. Организация и процедура проведения социально-психологической диагностики
  9. Основная процедура поиска и устранения неполадок сетей
  10. Основные подходы и процедура присвоения марочного названия

TextColor (Color: BYTE);

встановлює колір відображених на екрані символів, а процедура

TextBackground (Color: BYTE);

встановлює колір фону. Для цих процедур визначений набір констант кольорів

ім’я числове значення Колір використовується процедурами
Black   Чорний TextColor, TextBackground
Blue   Синій TextColor, TextBackground
Green   Зелений TextColor, TextBackground
Cyan   Голубий TextColor, TextBackground
Red   Червоний TextColor, TextBackground
Magenta   Фіолетовий TextColor, TextBackground
Brown   Коричневий TextColor, TextBackground
LightGrey   Світло-сірий TextColor, TextBackground
DarkGrey   Темно-сірий TextColor
LightBlue   Світло-синій TextColor
LightGreen   Світло-зелений TextColor
LightCyan   Світло-голубий TextColor
LightRed   Світло-червоний TextColor
LightMagenta   Світло-фіолетовий TextColor
Yellow   Жовтий TextColor
White   Білий TextColor
Blink   Мерехтіння TextColor

Константа Blink задає мерехтіння відображених символів і звичайно використовується в процедурі TextColor в якості доданка:

TextColor (Blue + Brink);

Дія процедур TextColor і TextBackground зводяться до запису в спеціальну змінну TextAttr модуля Crt відповідних значень. Ця змінна має тип BYTE і може приймати значення від 0 до 255. Значення змінної визначає поточний колір фону, символів і режим мерехтіння символів. Кожний з восьми бітів змінної TextAttr може містити наступну інформацію

Змінну TextAttr необхідно застосовувати, використовуючи наступну формулу:

TextAttr: = <колір символів> + <колір фону> [+мерехтіння];

Номер біта призначення в кольоровому режимі призначення в монохромному режимі
  синій компонент кольору символів Підкреслення (1 – є, 0 – немає)
  зелений компонент кольору символів колір символу
  червоний компонент кольору символів колір символу
  яскравість символів (1 – є, 0 – немає) Аналогічно кольоровому режимові
  синій компонент кольору фону колір фону/ Інверсія
  зелений компонент кольору фону колір фону/ Інверсія
  червоний компонент кольору фону колір фону/ Інверсія
  мерехтіння (1 – є, 0 – немає) Аналогічно кольоровому режимові

Колір символів може змінюватися в межах 0..15, а колір фону – в межах 0..7. атрибуту мерехтіння відповідає значення 128. Квадратні дужки для нього означають, що цей атрибут необов’язковий. Замість конкретних значень можна використовувати ті ж константи кольорів, що і в процедурах TextColor і TextBackground.

В загальному кажучи, змінну TextAttr можна використовувати замість процедур TextColor і TextBackground, але на практиці буває значно простіше встановлювати колір фону і символів окремо один від одного, не піклуючись про те, щоці дії впливають на решта бітів змінної TextAttr.

Для монохромних моніторів управління кольором дещо складніше, так як завжди на них відображається лише чорний, білий і яскраво-білий кольори. Які, в залежності від типу монітора, можуть замінюватися зеленими чи червоними кольорами. Крім того, для цих моніторів вводиться режим підкреслювання символів.

Правила кодування бітів в монохромному режимі складні і не зовсім очевидні. Підкреслення використовується тільки при відображені білих чи яскраво-білих символів на чорному фоні. Якщо в бітах кольору фону є хоча б одна одиниця, а в бітах кольору символів всі нулі, встановиться інверсний колір: чорні символи на білому фоні. Якщо в бітах кольору символів встановлена хоча б одна одиниця, встановлюється неяскравий білий колір на білому фоні. А якщо при цьому біт яскравості рівний одиниці, встановлюється яскраво-білий колір на білому фоні.

Процедури HighVideo і LowVideo не мають параметрів. Вони так, як процедури TextColor і TextBackground, виробляють установку значення змінної TextAttr. Процедура HighVideo встановлює значення біта яскравості змінної TextAttr рівним 1 (режим підвищеної яскравості). А процедура LowVideo, навпаки, перевертає це значення в нуль (режим нормальної яскравості).

Процедура NormVideo відновлює той кольоровий режим (колів фону, символів і мерехтіння), який був встановлений до моменту початку роботи програми.

ПРОЦЕДУРИ УПРАВЛІННЯ ВБУДОВАНИМ ДИНАМІКОМ І ТАЙМЕРОМ

Процедури роботи зі звуком модуля Crt

Sound (Freq: WORD);

і

NoSound

дозволяють отримати доступ до вбудованого динаміка комп’ютера. Процедура Sound включає динамік, який починає генерувати звук з заданою в герцах частотою тону. Це ніяк не відображується на роботі програми, яка не буде зупинена і може продовжувати нормально робити одночасно з подачею звукових сигналів до тих пір, поки не зустрінеться виклик процедури NoSound, яка вимикає динамік.

Процедури роботи зі звуком необхідно використовувати акуратно. Якщо після процедури Sound не викликати процедуру NoSound, то звук буде відтворюватися після завершення програми, і щоб його вимкнути, прийдеться або пере загрузити комп’ютер, чи заново перекомпілювати і запустити програму, попередньо добавивши в неї виклик процедури NoSound.

Процедура NoSound може слідувати після декількох процедур Sound, які змінюють частоту тону.

Дуже часто процедури Sound і NoSound використовуються разом з процедурою

Delay (ms: WORD);

яка зупиняє виконання програми на вказаний в параметрах час. Звичайно використовується наступна конструкція:

Sound (Freq); Delay (ms); NoSound;

Під час виконання цих операцій динамік буде відтворювати звук, але програма призупинить свою роботу.

Процедура Delay використовує для відліку часу вбудовану мікросхему таймер, яка вираховує десяті і соті долі секунди недостатньо точно, тому не слід застосовувати цю процедуру для точного вирахування часу.

ВИКОРИСТАННЯ КЛАВІШ РЕДАГУВАННЯ РЯДКІВ

При вводі інформації за допомогою клавіатури символи, що вводяться, відображаються на екрані, а їх коди передаються в буфер клавіатури для тимчасового зберігання. Процедури Read і ReadLn зчитують інформацію з буферу тільки після натиснення клавіші [Enter]. Поки вона не натиснута, рядок, що вводиться, не рахується введеним і його можна редагувати, використовуючи клавішу [Backspace].

Після підключення модуля Crt, крім [Backspace], з’являється можливість використовувати для редагування рядків ряду додаткових клавіш та їх комбінацій. Всі доступні при вводі рядків клавіші і клавіатурні комбінації для редагування приведені в таблиці

Клавіша призначення
[Backspace] видаляє останній введений символ
[Esc] видаляє всі введені символи
[Enter] завершує ввід рядка і записує ознаку кінця рядка в буфер
[Ctrl+A] виконує ті ж дії, що і[Esc]
[Ctrl+S] виконує ті ж дії, що і [Backspace]
[Ctrl+D] дістає з буфера останній введений символ, але стертий з екрану символ, і виводить його на екран
[Ctrl+F] відновлює на екран весь раніше стертий введений рядок
[Ctrl+Z] завершує ввід рядка і вибирає ознаку кінця файлу, якщо значення змінної CheckEOF модуля Crt рівне True. По замовчуванню воно рівне False.

ВИКОРИСТАННЯ КОМАНДНИХ СИМВОЛІ

При підключенні модуля Crt символи з кодами 0..31, які являються командними, відображаються на екрані у відповідності з таблицею символів ASCII як звичайні символи, без виконання зв’язаних з ними функціями.

ТЕМА: МОДУЛЬ GRAPH

Для створення графічного зображення в мові Turbo Pascal призначений стандартний бібліотечний модуль Graph. Він представляє собою бібліотеку програм, яка повністю забезпечує управління графічними режимами різних адаптерів дисплеїв: CGA, EGA, VGA, MCGA, Hercules, PC 3270, AT&T6300 і IBM 8514. Бібліотека містить близько 80 графічних констант і описаний типів даних.

Підключення модуля Graph до програми здійснюється стандартним способом, тобто за допомогою зарезервованого слова USES:

USES Graph;

Щоб запустити програму, в якій використовуються процедури модуля Graph, необхідно розташувати в робочий каталог відповідні графічні драйвери (файли з розширенням.BGI). якщо ви використовуєте штрихові шрифти, необхідно включити в цей каталог і файли шрифтів (з розширенням.CHR).

Модуль Graph представляє собою окремий файл GRAPH.TPU, який не входить в склад бібліотеки TURBO.TPL, і щоб забезпечити можливість роботи з графікою, потрібно зробити файл GRAPH.TPU доступним для комп’ютера.

ТИПИ ДРАЙВЕРІВ

В представленій нижче таблиці приведені типи графічних адаптерів і назви сумісних з ними драйверів

Драйвер апаратне забезпечення
CGA. BGI адаптери CGA, MCGA
EGAVGA.BGI адаптери EGA, VGA
HERC.BGI монохромний адаптер Hercules
ATT.BGI AT&T 6300 (400 рядків)
PC3270.BGI IBM 3270 PC
IBM8514.BGI IBM 8514

Драйвери представляють собою файли з розширенням.BGI, які забезпечують взаємодію програм з графічними пристроями (згідно стандартам фірми Borland, розширення.BGI повинні мати файли графічного інтерфейсу (Borland Graphic Interface). При ініціалізації визначеного графічного режиму підключається відповідний драйвер. Для забезпечення роботи програми в одному з графічних режимів процедура InitGraph визначає тип адаптера і завантажує відповідний BGI-файл. Процедура CloseGraph слугує для видалення графічного драйвера з пам'яті і відновлення текстового режиму роботи відеоадаптера.

При роботі з графікою в Turbo Pascal є можливість підключати не тільки стандартні, але і драйвери користувача. Останні повинні задовольняти стандарти Borland International. В модулі Graph знаходиться процедура RegisterBGIDriver, яка забезпечує підтримку роботи з драйверами користувача.

ТИПИ ШРИФТІВ

При відображенні тексту на екран дисплея в графічних режимах можуть застосовуватися найрізноманітніші шрифти – як стандартні, так і користувача. По замовчуванню після ініціалізації графічного режиму встановлюється шрифт DefaultFont. Для формування кожного символу шрифту використовується матриця розміром 8х8 бітів.

Шрифт Файл
TriplexFont TRIP.CHR
SmallFont LITT.CHR
SansSerifFont SANS.CHR
GothicFont GOTH.CHR

Стандартний набір шрифтів включає шрифти, приведені в таблиці. Кожному шрифту відповідає файл з розширенням.CHR. активізація потрібного шрифту здійснюється спеціальною процедурою. Висота і ширина символів кожного шрифту може змінюватися за допомогою спеціальних засобів.

ІНІЦІАЛІЗАЦІЯ ГРАФІКИ

класифікація типів драйверів і відео режимів

Перед початком роботи з графікою необхідно встановити найбільш підходящий для даного монітора відеорежим. В комплект поставки Turbo Pascal входить обмежене число драйверів, кожний з яких може підтримувати один чи декілька відеорежимів. Тип драйвера і режим можуть бути задані у вигляді числа чи символьної константи.

Нижче приведений список констант для задання типу графічного адаптера. Ці константи визначенні в модулі Graph.

Detect =0 автовизначник
CGA =1 адаптер CGA
MCGA =2 адаптер MCGA
EGA =3 адаптер EGA 256K
EGA64 =4 адаптер EGA 64K
EGAMono =5 EGA з монохромним дисплеєм
IBM8514 =6 адаптер 8514
HercMono =7 адаптер Hercules
ATT400 =8 для ПК AT&T
VGA =9 адаптер VGA
PC3270 =10 адаптер 3270
CurrendDriver =-128 для GetModeRange

Наступна таблиця містить перелік можливих графічних режимів для різноманітних типів відеоадаптерів.

драйвер ім'я константи режиму і її значення розширення екрану (в точках) палітра число відеосторінок
CGA CGAC0=0 CGAC1=1 CGAC2=2 CGAC3=3 CGAHi=4 320x200 320x200 320x200 320x200 640x200 4 кольори 4 кольори 4 кольори 4 кольори 2 кольори  
MCGA MCGAC0=0 MCGAC1=1 MCGAC2=2 MCGAC3=3 MCGAMed=4 MCGHi=5 320x200 320x200 320x200 320x200 640x200 640x480 4 кольори 4 кольори 4 кольори 4 кольори 2 кольори 2 кольори  
EGA EGALo=0 EGAHi=1 640x200 640x350 16 кольорів 16 кольорів  
EGA64 EGA64Lo=0 EGAHi=1 640x200 640x350 16 кольорів 4 кольори  
EGAMono EGAMonoHi=3 640x350 2 кольори 1 (2)
HERC HercMonoHi=0 720x348 2 кольори  
ATT400 ATT400C0=0 ATT400C1=1 ATT4002=2 ATT400C3=3 ATT400Med=4 ATT400Hi=5 320x200 320x200 320x200 320x200 640x200 640x400 4 кольори 4 кольори 4 кольори 4 кольори 2 кольори 2 кольори  
VGA VGALo=0 VGAMed=1 VGAHi=2 640x200 640x350 640x480 16 кольорів 16 кольорів 16 кольорів  
PC3270 PC3270Hi=0 720x350 2 кольори  
IBM8514 IBM8514Lo=0 IBM8514Hi=1 640x480 1024x768 256 кольори 256 кольори  

ініціалізація і завершення відеорежиму

Процедура ініціалізації InitGraph. Будь-яка програма, призначена для роботи з графікою, обов’язково повинна містити блок викликів процедур ініціалізації графічного режиму і звернення до процедури його завершення. В такому блоці прохолодить ініціалізація графічного режиму, перевіряється правильність ініціалізації і, якщо всі операції пройшли успішно, дозволяється подальша робота програми. Процедура ініціалізації оголошена наступним чином:

InitGraph (VAR GraphDriver: INTEGER; {тип адаптера}

VAR GraphMode: INTEGER; {режим графіки}

VAR DriverPath: STRING); {шлях до драйвера}

Змінні GraphDriver і GraphMode задають драйвер і режим у відповідності з значеннями, приведеними в попередній таблиці.

Наприклад:

GraphDriver: =EGA; GraphMode: =EGAHi;

В якості значень кожного х цих параметрів можна задати як ім'я відповідної зарезервованої константи, так і її значення; обидва параметри можна встановити до виклику процедури InitGraph.

Якщо параметр GraphDriver містить номер конкретного адаптера, то і другий параметр, GraphMode, повинен мати значення режиму, допустимого для цього адаптера. Коли GraphDriver присвоюється значення константи Detect, система переходить в режим автовизначення. Якщо можливе переключення системи в графічний режим, то проходить ініціалізація відповідного BGI-драйвера і вмикається режим з максимальним розширенням для даного типу відеоадаптера. В GraphDriver і GraphMode при цьому процедура поверне автоматично визначені значення цих параметрів чи код помилки.

Таке встановлення параметру GraphDriver рекомендується в тих випадках, коли програма повинна робити на різних комп’ютерах з різними відеоадаптерами. Але цей метод має один суттєвий недолік: оскільки під час виконання програми всі драйвери одночасно повинні знаходитися в пам'яті чи на диску, для великих програм це може привести до зменшення швидкості роботи програми.

Всі решта графічні установки (положення поточного вказівника, палітра, колір, параметри графічного вікна і т. д.) при ініціалізації приймаються по замовчуванню.

Необхідно спеціально відмітити той факт, що Turbo Pascal підтримує графічну плату IBM 8514 – графічну плату з високим розширенням, яка дозволяє отримати розширення до 1024х768 точок і палітру, яка містить 256 відтінків з 256 кольорів. Файл драйвера для цієї графічної плати називається IBM8514.BGI.

Turbo Pascal не може правильно розпізнавати графічну плату IBM 8514 в режимі автовизначення (вона буде розпізнаватися даними алгоритмами як плата VGA). Таким чином, щоб використовувати плату IBM 8514, параметру GraphDriver при виклику InitGraph потрібно присвоїти значення IBM8514 (яке визначене в модулі Graph). При роботі з платою IBM 8514 не слід використовувати з InitGraph процедуру DetectGraph чи константу Detect.

Плата AT&T 400 також розпізнається автоматично. Щоб використовувати відповідний драйвер, необхідно відмітити автовизначення і передати процедурі InitGraph попередньо встановленні значення параметрів GraphDriver і GraphMode.

Процедура CloseGraph. Коли всі дії з графікою завершені, необхідно вийти з графічного режиму. Це робиться за допомогою процедури CloseGraph, яка немає параметрів.

В процесі свого виконання ця процедура, звільняє пам’ять, яка була розділена під драйвери графіки, файли шрифтів і проміжні дані, і відновлює той режим роботи адаптера, в якому він знаходився до виконання ініціалізації системи. Наступні переключення в графічний режим можливі тільки повторної ініціалізації.

обробка помилок ініціалізації

При виконанні будь-якої програми можуть виникнути помилки, і графічні програми, в цьому аспекті нічим не відрізняються від інших. В модулі Graph реалізований механізм знаходження і генерування повідомлень про помилки за допомогою функцій GraphResult і GraphErrorMsg.

Функція

GraphResult: INTEGER;

повертає 0, якщо остання графічна операція виконалася без помилок, чи число в діапазоні від -15 до -1, якщо помилка мала місце.

Необхідно пам’ятати, що якщо функція GraphResult викликається двічі після виконанні однієї і тієї ж операції, то при повторному виклику її значення буде завжди рівне нулю, тому рекомендується зберігати значення цієї функції в якій-небудь змінній для подальшого використання, якщо це необхідно.

Для швидкої видачі простого повідомлення про тип помилки графічної системи використовується функція, яка перетворює результат виклику функції GraphResult в повідомлення, яке можна вивести на екран процедурою Write. Ця функція оголошується так:

GraphErrorMsg (Error: INTEGER): STRING;

процедури роботи з відеорежимами

Процедура DetectGraph. Для тестування графічного адаптера використовується процедура DetectGraph, яка оголошена в модулі Graph наступним чином:

DetectGraph (VAR GraphDriver, GraphMode: INTEGER);

Ця процедура може бути викликана до ініціалізації графічного режиму. Через параметр GraphDriver повертається номер драйвера з списку значень, а через параметр GraphMode – значення відповідного цьому драйверу режиму. Ці значення і рекомендується представляти в якості фактичних параметрів у процедуру InitGraph. Якщо на комп’ютері не встановлена графічна плата, то функція GraphResult буде повертати значення grNotDetected. Після визначення змінної GraphDriver автоматично стає доступним діапазон відповідних їй графічних режимів.

Діапазон графічних режимів. Існує можливість управляти режимами роботи графічного адаптера. Це робиться за допомогою групи процедур і функцій, які працюють вже після ініціалізації графіки.

Номер поточного графічного режиму для встановлення драйвера визначається функцією

GetGraphMode: INTEGER;

а функція

GetMaxMode: WORD;

повертає номер режиму з максимальним розширенням для графічного адаптера; таким чином кожний драйвер підтримує діапазон 0..GetMaxMode. Звичайно цей же результат можна отримати з процедури:

GetModeRange (GraphDriver: INTEGER; VAR LoMode, HiMode: INTEGER);

яка через параметри LoMode і HiMode повертає, відповідно, нижню і верхню границю режимів для драйвера GraphDriver.

Функція

GetDriverName: STRING;

повертає ім'я поточного встановленого драйвера з списку констант.

переключення між текстовим і графічним режимами

Переключення режимів. Переключення режимів відбувається за допомогою процедури

SetGraphMode (GraphMode: INTEGER);

яка переключає систему у вказаний параметром GraphMode графічний режим і очищає екран монітору. При цьому всі додаткові характеристики встановлюються по замовчуванню. Але, щоб не виникло помилки, не слід забувати про те, що такі перевимикання можливі тільки в рамках поточного драйвера.

Процедура RestoreCRTMode. При створенні деяких пакетів, які використовують як графічні, так і текстові режими роботи комп’ютера, може бути корисна процедура RestoreCRTMode, яка повертає систему в текстовий режим, встановлений до ініціалізації графіки. Подібні дії виконує процедура CloseGraph. Однак її застосування припускає, що повернення в графічний режим повинен проводиться досить складним чином через процедуру InitGraph. Якщо ж скористатися процедурою RestoreCRTMode, то повернення в графіку буде досить простим.

Обернене переключення здійснюється за допомогою функції GetGraphMode, яка повертає номер поточного графічного режиму. При роботі RestoreCRTMode вивантаження графічного драйвера не відбувається, тобто він залишається в пам'яті. Це і є основна перевага процедури RestoreCRTMode. Слід мати на увазі, що при оберненому включені графіки всі параметри графічної системи встановлюються у вихідне положення. Крім того, при подібному переключенні відбувається очищення екрану.

ПОБУДОВА ЗОБРАЖЕНЬ НА ЕКРАНІ

система координат

Для побудови зображень на екрані в графічному режимі застосовується система координат, дещо відрізняється від використовуваної в текстовому режимі. Відлік починається від верхнього лівого кута екрану, який має координати (0,0). Значення Х (стовпець) збільшується в напрямку зліва на право, значення Y (рядок) – в напрямку зверху вниз. При цьому екран представляється у вигляді прямокутного масиву адресних точок, а не символів, як в текстовому режимі. Для різних типів адаптерів і режимів значення кількості точок по вертикалі і горизонталі можуть досить відрізняються. Визначення значення максимальних координат екрану в модулі Graph реалізовано за допомогою функцій

GetMaxX: INTEGER;

GetMaxY: INTEGER;

Якщо при адресації точок вказується значення координат, яке перевищує максимальні, операція ігнорується.

управління поточним вказівником

Щоб побудувати зображення, необхідно обов’язково вказати початкову позицію. В текстових режимах цю позицію визначає положення курсору, який розміщується кожний раз за останнім відображеним символом і вказує на місцезнаходження наступного. В графічному режимі видимого курсору немає, але є невидимий поточний вказівник СР (current pointer). Який виконує ті ж функції, що і курсор в текстовому режимі.

В графічному режимі для переміщення СР використовуються процедури MoveTo і MoveRel.




Дата добавления: 2015-09-11; просмотров: 18 | Поможем написать вашу работу | Нарушение авторских прав

Для доповнення текстового файлу використовують режим до запису. | Квартира з номером 34 у 13 будинку з номером 12. | Release(p); | Формування. | Readln(a); | New(q); | USES CRT; | Заголовок. | Xx: real; | Rewrite (Output); |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.017 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав