Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

ГЛАВА 15. МОДУЛЬ CRT


 Предыдущая страница     |     Следующая страница  
Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

Модуль Crt реализует ряд мощных  программ,  которые  дают  Вам полный   контроль   над  возможностями  Вашей  машины,  такими  как управление режимами экрана,  расширенные  коды  клавиатуры,  цвета, окна и звук.

     Crt может  быть  использован  только  в  программах,   которые выполняются на IBM PC, AT, PS/2 и совместимых с ними.

     Одна из  основных  особенностей  Crt  -   достижение   высокой скорости и гибкости операций вывода на экран. Программы, которые не используют модуль Crt посылают выходные данные на экран  через DOS, что   гораздо   медленнее.  С  использованием  модуля  Crt,  данные посылаются прямо в BIOS,  или,  для более быстрых операций, прямо в видеопамять.

   

Файлы ввода и вывода.

      Инициализационный код модуля  Crt  назначает  текстовые  файлы Input и Output на монитор, вместо стандартных файлов вводы и вывода DOS.  Это соответствует выполнению следующих  операторов  в  начале программы:

        AssignCrt(Input); Reset(Input);

       AssignCrt(Output); Reset(Output);

      Это означает, что переназначение В/В для файлов Input и Output невозможно до  тех  пор,  пока  не  будет явного назначения ввода и вывода обратно перед выполнением

        Assign(Input,''); Reset(Input);

       Assign(Output,''); Reset(Output);

[начало] [оглавление]

   

Окна.

      Crt поддерживает простую,  но  мощную  форму  окон.  Процедура Window позволяет Вам определить окно в любом месте экрана. Когда Вы пишете в такое окно, окно представлено, как если бы Вы использовали весь экран,    оставляя   часть   экрана   не   тронутой.   Другими словами, экран за пределами окна  недоступен.  Внутри  окна  строки могут быть  вставлены и удалены,  курсор переносится при достижении правого края и  текст  сдвигается  вверх  при  достижении  курсором нижней линии.

     Все экранные   координаты,   за   исключением   тех,   которые используются  для определения окна,  задаются относительно текущего окна и экранные координаты (1,1) соответствуют верхнему левому углу экрана.

     Окном по умолчанию является весь экран.

     Также поддерживаются  режимы  для  EGA  (43  строки) и VGA (50 строк) (См. описание TextMode в главе 15).

[начало] [оглавление]

   

Специальные символы.

      Когда идет  запись  в  Output или в файл,  который назначен на экран, следующие управляющие символы имеют специальное значение:

──────────────────────────────────────────────

   Символ      Имя                         Описание

──────────────────────────────────────────────

   #7      Сигнал         Звуковой сигнал через внутренний громкоговоритель.

    #8      Символ назад   Передвигает курсор на один символ назад. Если курсор уже на левой границе текущего окна, ничего не случается.

    #10     Новая строка   Передвигает курсор на одну строку вниз. Если курсор уже внизу текущего окна,      текст сдвигается на одну строку вверх.

    #13     Возврат        Возвращает курсор на левый край каретки кущего окна.

──────────────────────────────────────────────

      Все другие  символы  будут  появляться  на  экране  когда  они написаны.

[начало] [оглавление]

   

Ввод строки.

      Когда идет чтение из Input или из  текстового  файла,  который назначает  на  экран,  вводится одна строка входного текста за одну операцию. Строка запоминается во внутреннем буфере текстового файла и  когда  строка  читается,  этот  буфер  используется  как входной источник. Когда буфер пуст, вводится новая строка.

     Когда вводятся     строки,     доступны     следующие    ключи редактирования:

──────────────────────────────────────────────────

  Ключ редактирования                  Описание

──────────────────────────────────────────────────

     BackSpace         Удаляет последний введенный символ.

      ESC               Удаляет всю входную строку.

      Enter             Завершает входную строку и запоминает маркер конца строки в буфере.  (carriage return / line feed)  (возврат каретки / новая строка)

      Ctrl-S            Тоже, что и BackSpace.

      Ctrl-A            Тоже, что и ESC.

      Ctrl-D            Выбирает один символ из последней входной строки.

      Ctrl-F            Выбирает последнюю входную строку.

      Ctrl-Z            Завершает входную строку и генерирует  маркер конца файла.

────────────────────────────────────────────────

      Ctrl-Z будет  только  генерировать  маркер  конца файла,  если переменная CheckEof установлена в  True,  по  умолчанию  она  равна False.

      Для того,   чтобы  проверить  состояние  клавиатуры  и  ввести отдельные символы под управлением  программы,  используйте  функции KeyPressed и ReadKey.

[начало] [оглавление]

   

Константы, типы и переменные.

      Каждая из констант,  типов и переменных, определенных в модуле Crt, кратко обсуждена в этом разделе.

 

Константы.

Константы режима Crt.

      Следующие константы  используются  как   параметры   процедуры TextMode:

──────────────────────────────────────────────────

 Константа     Значение                   Описание

──────────────────────────────────────────────────

 BW40            0       40*25 B/W (черно-белый) на цветном

                         адаптере

 BW80            2       80*25 B/W на цветном адаптере

 MONO            7       80*25 B/W на нецветном адаптере

 CO40            1       40*25 цветной

 CO80            3       80*25 цветной

 FONT8x8       256       для EGA/VGA 43 и 50 строк

 C40          CO40       для совместимости с 3.0

 C80          CO80       для совместимости с 3.0

─────────────────────────────────────────────────       

BW40, CO40,  BW80  и  CO80  представляют  4  цветных текстовых режима, поддерживаемые  цветным  графическим  адаптером  CGA.  MONO представляет     единственный    черно-белый    текстовый    режим, поддерживаемый монохромным адаптером.  FONT8x8 представляет 43 и 50 строковые  режимы  для EGA/VGA.  Константы С40 и С80 используются в режиме совместимости с Turbo  Pascal  3.0.  LastMode  возвращает  в последний активный текстовый режим после использования графики.

[начало] [оглавление] 

Константы цветов текста.

      Следующие константы  используются  в  процедурах  TextColor  и TextBackground:

    ──────────────────────────────────

     Константа         Значение

   ──────────────────────────γ";───────

      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

   ──────────────────────────────────

      Цвета представлены  числами  с  0  до  15 ,  для более легкого использования цветов можно использовать эти константы вместо чисел. В  цветовых текстовых режимах цвет символов выбирается из 16 цветов и фоновый цвет из 8 цветов.  Цвет символов может быть также  выбран блинкующий.

[начало] [оглавление]   

Переменные.

      В Crt определены переменные:

    ──────────────────────────────────

     Переменная        Тип

   ──────────────────────────────────

     CheckBreak    Boolean

     CheckEof      Boolean

     CheckSnow     Boolean

     DirectVideo   Boolean

     LastMode      Word

     TextAttr      Byte

     WindMin       Word

     WindMax       Word

   ──────────────────────────────────

[начало] [оглавление]   

CheckBreak.

      Разрешает или запрещает проверки для Ctrl-Break.

      var CheckBreak : Вoolean;

      Когда CheckBreak в True,  нажатие Ctrl-Break  будет  завершать программу во время ее очередного вывода на экран.  Когда CheckBreak в False,  нажатие  Ctrl-Break  не  дает   эффекта.   По   умолчанию CheakBreak  в  True.  (Во  время  выполнения  Crt запоминает старый вектор прерывания по ControlBreak,  $1B,  в  глобальную  переменную типа pointer-SaveInt1B).

[начало] [оглавление]   

CheckEof.

      Разрешает или запрещает символ конца файла:

      var CheckEof : Вoolean;

      Когда CheckEof   в   True,   символ    конца    файла    будет генерироваться, если   Вы   нажмете   Ctrl-Z  во  время  чтения  из файла, назначенного на экран.  Когда CheckEof равна False,  нажатие Ctrl-Z не дает эффекта. По умолчанию CheckEof в False.

[начало] [оглавление]   

CheckSnow.

      Разрешает или  запрещает  "контроль  снега"  при   запоминании символов прямо в видеопамяти.

      var CheckSnow : Вoolean;

      На большинстве  типов  CGA  на  экране будут появляться помехи ("снег")  при  запоминании  символов  в  видеопамяти  не  во  время обратного хода   луча   трубки  терминала.  Этого  не  случится  на монохромных адаптерах или адаптерах типа EGA.

     Когда выбран цветной режим и CheckSnow в True, прямая запись в видеопамять будет производится только во время обратного хода луча. Если  Вы  работаете  с новым исполнением CGA,  Вы можете установить CheckSnow в False в начале Вашей программы и после  каждого  вызова TextMode. Это будет запрещать проверку на "снег", в результате чего скорость вывода значительно возрастает.

     CheckSnow не оказывает действие, если DirectVideo в False.

[начало] [оглавление]   

DirectVideo.

      Разрешает и запрещает прямой  доступ  к  памяти  для  Write  и Writeln при выводе на экран.

      var DirectVideo : Boolean;

      Когда DirectVideo  в  True,  Write  и  Writeln  при  выводе  в файлы, назначенные на экран, будут запоминать символы в видеопамяти вместо вызова BIOS.  Когда DirectVideo в False ,  все символы будут записываться через вызовы BIOS, что значительно медленнее.

     DirectVideo по  умолчанию  всегда  в True.  Если по каким-либо причинам, Вы хотите выводить символы через вызовы  BIOS, установите DirectVideo в False в начале Вашей программы и после каждого вызова TextMode.

 [начало] [оглавление]

LastMode.

      Каждый раз   когда  вызывается  TextMode,  текущий  видеорежим запоминается в LastMode.  Кроме того, LastMode инициализируется при запуске программы в текущий видеорежим.

         var LastMode : Word;

[начало] [оглавление]   

TextAttr.

      Содержит текущие атрибуты текста.

      var TextAttr : Byte;

      Атрибуты текста обычно устанавливаются через  вызовы TextColor и TextBackground.   Однако,   Вы   можете   установить   их  прямым запоминанием значения в TextAttr.  Информация о цвете кодируется  в TextAttr следующим образом:

     бит       7   6   5   4   3   2   1   0

             ┌───┬───┬───┬───┬───┬───┬───┬───┐

             │ B │ b │ b │ b │ f │ f │ f │ f │

             └───┴───┴───┴───┴───┴───┴───┴───┘

где ffff - 4 битовый цвет символа,  bbb - 3 битовый цвет фона, В -  бит  установки  блинкования  (мигания).  Если  Вы  используете константы цветов для создания значений TextAttr,  помните, что цвет фона может быть выбран только из первых 8 цветов  и что  он  должен быть  умножен на 16 для установки его в правильную битовую позицию. Следующий пример выбирает блинкующие желтые символы на  синем фоне:

          TextAttr := Yellow + Blue * 16 + Blink;

[начало] [оглавление]   

WindMin и WindMax.

      Содержат экранные координаты текущего окна.

           var WindMin, WindMax : Word;

      Эти переменные   устанавливаются   вызовом  процедуры  Window. WindMin определяет верхний левый угол и WindMax  определяет  нижний правый угол.  Координата Х запомнена в младшем байте и координата Y запомнена в старшем байте.  Например, Lo(WindMin) выдает координату Х  левой  границы  и Hi(WindMax) выдает координату Y нижней границы окна. Верхний левый угол экрана соответствует (X,Y)=(0,0). Заметим, однако, что для координат,  передаваемых в Window и GotoXY, верхний левый угол соответствует (1,1).

[начало] [оглавление]

   

Процедуры и фуннкции.

────────────────────────────────────────────────

     Функция                       Описание

────────────────────────────────────────────────

     KeyPressed     Возвращает True, если на клавиатуре была нажата  клавиша, и False в противном случае.

      ReadKey        Читает символ с клавиатуры.

      WhereX         Возвращает Х координату текущей позиции курсора  относительно текущего окна. Х - горизонтальная  позиция.

      WhereY         Возвращает Y координату текущей позиции курсора   относительно текущего окна. Y - вертикальная  позиция.

────────────────────────────────────────────────

────────────────────────────────────────────────

     Процедура                     Описание

────────────────────────────────────────────────     

      AssignCrt       Назначает текстовый файл на экран.

      ClrEol          Удаляет все символы от текущей позиции курсора до конца строки без передвижения курсора.

      ClrScr          Очищает экран и помещает курсор в верхний левый угол.

      Delay           Задержка на указанное число миллисекунд.

      DelLine         Удаляет строку на которой находится курсор и перемещает все строки ниже этой строки на    строку вверх. Нижняя строка очищается.

      GotoXY          Позиционирует курсор. Х - горизонтальная позиция и Y - вертикальная позиция.

      HighVideo       Устанавливает высокую интенсивность символов.

      InsLine         Вставляет пустую строку в позиции курсора.

      LowVideo        Устанавливает низкую интенсивность символов.

      NormVideo       Устанавливает нормальную интенсивность символов.

      NoSound         Выключает внутренний громкоговоритель.

      Sound           Включает внутренний громкоговоритель.

      TextBackground  Устанавливает цвет фона.

      TextColor       Устанавливает цвет символов.

      TextMode        Устанавливает текстовый режим.

      Window          Определяет текстовое окно на экране.

─────────────────────────────────────────────────

[начало] [оглавление]


Предыдущая страница     |     Следующая страница


Добавить в избанное Обсудить в форуме Написать автору сайта Версия для печати

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz