Консольний обмін даними Обмін інформацією з користувачем завдяки


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

Керування консольним виведенням текстової інформації Всі функції консольного виведення інформації можна поділити на шість груп: встановлення заданого текстового режиму: textmode(); встановлення атрибутів символів: textcolor(), textbackground(), textattr(), highvideo(), lowvideo(), normvideo(); формування текстових вікон та роботи з вікнами: window(), clrscr(), gettextinfo(), gettext(), puttext(), movetext();

виведення символів, рядків і числових данних: putch(), cputs(), cprintf(); редагування тексту у вікні екрана: clreol(), delline(), insline(); керування текстовим курсором: gotoxy(), wherex(), wherey(), _setcursortype(); Стандартні текстові режимивідеоадаптерів: 25 рядків по 40 символів – режими 0 та 1 25 рядків по 80 символів – режими 2, 3 та 7 50 рядків по 80 символів – режими 64 Основним є режим номер 3.

Змінити текстовий режим можна функцією: void textmode (int tmode); Параметр tmode можна задавати числовим значенням номеру режиму або іменованою константою (BW40 – режим 0, C40 – режим 1, …. ). Усі режими, крім 7, кольорові та дають змогу відтворювати символи з використанням 16-колірної палітри. Зміна режиму пов’язана з очищенням відеопам’яті – попереднє зображення витирається, відновлюються встановлені на момент запуску програми атрибути символів, курсор переводиться в позицію (1, 1).

Встановлення атрибутів символів Кожен символ екрана (знакомісце) займає у відеопам’яті 2 байта: молодший містить ASCII-код символу, а старший – атрибути символа. Структура байта атрибутів і призначення кожного біта: 0..2 – колір символа; 3 – яскравість кольору символа; 4..6 – колір фону; 7 – яскравість фона/ефект блимання. Стандартно встановлюється світло-сірий колір символів і чорний колір фону (байт атрибутів 00000111 )

Кольори можуть задаватись числовими значеннями або константами ( які оголошені в

Зміна всього байта атрибутів: void textattr (int sattr); Приклад: textattr (YELLOW | BLUE << 4 | BLINK); встановиться жовтий колір символів, синій колір фону та підключиться ефект блимання. Яскравістю символів керують наступні функції: void highvideo (void); void lowvideo (void); void normvideo (void);

Формування текстових вікон Активним вікном називають прямокутну область екрана, в межах якої здійснюється поточне виведення текстових повідомлень. Для активізації текстового вікна призначена функція void window ( int left, int top, int right, int bot ); Параметри задають позицію лівого верхнього кута ( left - горизонтальна, top - вертикальна координати ) та знакомісце правого нижнього кута вікна. Координати вказуються відносно початку екрана (1, 1) . Наступні операції виведення відображатимуть інформацію в межах вікна.

(1, 1) (80, 25) Відкриття екрана не очищує його. Щоб звільнити вікно від попередніх даних і зафарбувати поточним кольором фону, використовують функцію void clrscr (void); Для створення вікна виділеного рамкою виконують такі дії: виводять рамку вікна в повноекранному режимі, потім відкривають вікно всередині рамки.

Для формування рамки використовують символи псевдографіки. Інформацію про параметри активного вікна можна отримати через функцію void gettextinfo (struct text_info * winf); У результаті виклику функції заповнюється структура (оголошена в

Виведення тексту у вікно екрана Консольне виведення здійснюється в межах активного вікна. У разі досягнення правої межі вікна виведення тексту продовжується з початку наступного рядка. Коли текст виходить за нижню праву межу вікна, відбувається автоматичний вертикальний скролінг. Виведення окремного символа у поточну позицію здійснює функція int putch (int ch); Виведення символьного рядку int cputs (const char * str );

Приклад – кожен символ рядка функція відображає іншим кольором, а колір фону встановлює інверсним до кольору символа. void OutColorText (char * text) { char *ps = text; int col = 0; /*колір символів*/ while ( *ps ! = `\0`) { textcolor (col); textbackground (~col); /*інверсний колір фону*/

putch (*ps++); if (++col >15) /*зміна кольору*/ col = 0; } putch (`\r`); /*перехід на початок*/ putch (`\n`); /*нового рядка*/ } Форматне виведення даних int cprintf (const char * format, … ) є аналогом бібліотечної функції printf (). Ця функція ( як і cputs() не переводить курсор на початок наступного рядка).

Редагування рядків вікна Функції що працюють з рядками активного текстового вікна: void clreol (void); витирає вміст частини рядка починаючи від поточної позиції курсору до правої межі текстового вікна void delline (void); видаляє рядок активного вікна, на якому в даний момент розміщений курсор. Всі наступні рядки зсуваються на угору. void insline (void); вставляє порожній рядок. Всі наступні зсуваються вниз. Якщо останній рядок виходить за межі вікна, він втрачається.

Керування текстовим курсором void gotoxy ( int col, int row ); переміщує курсор у задану позицію активного вікна int wherex (void); int wherey (void); повертає поточні горизонтальну та вертикальну координати курсору void _setcursortype (int cform); встановлює тип курсору. Параметр cform може приймати значення: 0 – невидимий курсор 1 – високий курсор 2 – звичайний курсор

5372-sl_13.ppt
- Количество слайдов: 15