Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций часть 3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
80 Кб
Скачать
☆

25.3. Обработка ошибок инициализации.

Процедура InitGraph возвращает результат своей работы в параметре GraphDriver. В случае ошибки он может принимать значения:

-2 — нет графического адаптера

-3 — не найден файл драйвера

-4 — ошибка в драйвере (в его коде)

-5 — не хватает памяти для загрузки драйвера

-10 — невозможный режим для драйвера

-15 — нет такого драйвера

Если же ошибок при инициализации не обнаружено, то в параметре GraphDriver возвращается номер адаптера из списка констант.

В модуле Graph реализован ещё один способ проверки результата проведения графической операции. Он осуществляется с помощью функции GraphResult: Integer, которая возвращает код результата последнего вызова одной из процедур или функций модуля.

Таблица кодов, возвращаемых GraphResult, и расшифровка их содержания приведены в литературе. [ ]

Для быстрой выдачи простого сообщения о типе ошибки графической системы используется функция, преобразующая результат вызова функции GraphResult в сообщение, которое можно вывести на экран процедурой Write. Эта функция объявлена как GraphErrorMsg(ErrorCode:Integer): String;

Константы кодов ошибок, определённых в модулеGraph, и соответствующие им сообщения приведены в литературе. [ ]

Простейший блок инициализации графики может выглядеть так:

Uses Graph; {подключен модуль Graph}

Procedure GrInit; {инициализация режима графики}

Var

GraphDriver: Integer; {для графического адаптера}

GraphMode: Integer; {для графического режима}

ErrorCode: Integer; {для кода ошибки}

Begin

GraphDriver:=Detect;

InitGraph(GraphDriver, GraphMode, ‘ ‘); {инициализация}

ErrorCode:= GraphResult; {результат инициализации}

if ErrorCode< > grOk then {если не успешно, то…}

begin

writeln(‘Ошибка графики: ‘,GraphErrorMsg(ErrorCode));

writeln(‘Программа остановлена’);

Exit;

end

End;

{пример инициализации }

Begin

GrInit; {вызов инициализации }

Line(0,0,GetMaxX,GetMaxY); {работа с графикой}

Readln; {пауза до нажатия ввода}

CloseGraph;{закрытие режима графики}

End.

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

25.4. Классификация и анализ графических режимов.

Для тестирования графического адаптера в модуле Graph объявлена процедура DetectGraph(Var GraphDriver,GraphMode: Integer). Эта процедура может быть вызвана до инициализации графики. Через формальный параметр GraphDriver возвращается значение константы, определяющей тип графического адаптера, а через параметр GraphMode- значение константы режима.

Эти значения можно подставить в качестве фактических параметров в процедуру InitGraph.

25.5. Диапазоны графических режимов.

Номер текущего графического режима для установленного драйвера определяется функцией GetGraphMode: Integer.

Функция GetMaxMode: Word возвращает номер максимального режима для графического адаптера.

Функция GetModeName(GraphMode: Integer): String возвращает строку, в которой содержится последовательно через пробелы разрешение, имя константы и иногда название палитры (‘640*480 VGA’).

Функция GetDriverName: String позволяет получить имя используемого драйвера.