Предопределенные переменные для работы с оверлеями




Мы рассматривали переменную модуля Overlay OvrResult с набором констант-значений (см. разд. 18.3.2) и переменные OvrTrapCount и OvrLoadCount (разд. 18.5.2). Кроме них, определены еще тип и две переменные:

TYPE

OvrReadFunc = Function(OvrSeg: Word): Integer;

VAR

OvrReadBuf: OvrReadFunc;

OvrFileMode: Byte;

Переменная OvrReadBuf предназначена для перехвата операции загрузки оверлея и позволяет устанавливать собственную функцию чтения и проверки оверлейных файлов. Это может понадобиться, например, в случае необходимости проверки наличия сменного диска. Когда администратору оверлеев нужно прочитать очередной сегмент, он вызывает функцию, адрес которой хранится в переменной OvrReadFunc. Если эта функция возвращает нуль, то считается, что операция чтения прошла успешно. Если не нуль,то системой генерируется код фатальной ошибки номер 209 Overlay file read error («Ошибка чтения файла оверлея»). Параметр OvrSeg указывает, какой сегмент должен быть загружен. Однако, в силу того что имя сегмента неявно передается в эту функцию процедурой OvrInit, его можно считать предопределенным.

Для установки собственной процедуры проверки загрузки оверлея необходимо проделать следующее:

1) описать в основной программе собственную функцию обработки чтения оверлея из OVR-файла с заголовком, соответствующим типу OvrReadFunc, и убедиться, что она будет компилироваться в режиме {$F+}. Внутри этой функции после всех предварительных проверок должен стоять вызов основной (сохраненной) функции чтения оверлея. После этого можно производить обработку ошибок;

2) запомнить (сохранить) в программе стартовое значение переменной OvrReadBuf;

3) присвоить переменной OvrReadBuf адрес собственной функции обработки чтения файла. {402}

Внимание! Из собственной функции чтения оверлея никогда не должен производиться вызов какой-либо оверлейной подпрограммы. Если же это требование будет нарушено, то придется затратить несколько лишних минут на перезагрузку MS-DOS и восстановение состояния среды программирования.

Сама подстановка функции чтения оверлея должна находиться сразу за вызовом процедуры OvrInit.

Переменная OvrFileMode определяет код доступа при открытии оверлейного файла. По умолчанию код доступа соответствует режиму «только чтение». Для того чтобы изменить код доступа, необходимо перед инициализацией оверлеев присвоить новое значение этой переменной, о котором можно справиться в технических руководствах по MS-DOS. Реальная необходимость в этом может возникнуть, пожалуй, только при работе в локальных сетях ПЭВМ.

Для работы с оверлеями предназначены и некоторые специальные переменные модуля System, объявленные как переменные со стартовым значением:

CONST

OvrCodeList: Word =0; { список сегментов кодов }

OvrHeapSize: Word =0; { стартовый размер буфера }

OvrDebugPtr: Pointer=nil; { зарезервировано для отладчика }

OvrHeapOrg: Word =0; { сегмент начала буфера }

OvrHeapPtr: Word =0; { указатель заполнения буфера }

OvrHeapEnd: Word =0; { сегмент конца буфера }

OvrLoadList: Word =0; { используется администратором }

OvrDosHandle: Word =0; { используется администратором }

OvrEMSHandle: Word =0; { используется администратором }

Они предназначены в основном для обслуживания системных запросов администратора оверлеев, и не стоит экспериментировать с их значениями. Реально можно использовать лишь переменные, описывающие буфер (см. разд. 18.4.3).

Включение оверлеев в ЕХЕ-файлы

Версия 5.5 Турбо Паскаля позволяет хранить оверлейную часть в одном файле с исполняемым кодом, а не в отдельном OVR-файле. Для этого следует дописать оверлеи в конец ЕХЕ-файла командой MS-DOS COPY с ключом /В:

COPY /В TEST.EXE+TEST.OVR {403}

При этом надо быть уверенным, что ЕХЕ-файл откомпилирован без отладочной информации (в интегрированной среде в меню Debug/Standalone debugging стоит Off). Чтобы инициализировать оверлей, достаточно в процедуре OvrInit указать имя основного ЕХЕ-файла. Обычно это делают через функцию ParamStr:

OvrInit(ParamStr(0)) {404}

Глава 19. Модуль Graph

Модуль Graph представляет собой библиотеку подпрограмм, обеспечивающую полное управление графическими режимами различных адаптеров дисплеев: CGA, EGA, VGA, MCGA, Hercules, PC3270, AT&T6300 и IВМ8514. Библиотека содержит более пятидесяти графических процедур и функций, как базовых (рисование точек, линий, окружностей и т.п.), так и расширяющих возможности базовых (многоугольники, заполнение фигур, вывод текста и др.).

Чтобы запустить программу, использующую процедуры модуля Graph, необходимо, чтобы в рабочем каталоге находились соответствующие графические драйверы (файлы с расширением.BGI), а если программа использует еще и штриховые шрифты, то необходимо, чтобы там же находились файлы шрифтов (с расширением.CHR). Кроме того, системе программирования (компилятору) должен быть доступен модуль GRAPH.TPU (он не входит в состав файла TURBO.TPL, а изначально находится в архиве BGI.ARC).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: