Такая установка параметров процедуры рекомендуется в тех случаях, когда программа должна работать на разных ПЭВМ с различными видеоадаптерами. Однако этот метод предполагает наличие в памяти ПЭВМ или на диске одновременно всех драйверов. Если программа большая, то наличие всех драйверов в памяти может вызвать затруднения.
Если же параметр GraphDriver содержит номер конкретного адаптера, то и второй параметр, GraphMode, должен иметь значение (номер) режима, допустимого при этом адаптере.
Все остальные графические установки (положение текущего указателя, палитра, цвет, параметры графического окна и т.д.) при инициализации принимаются по умолчанию.
Параметр DriverPath указывает путь в каталог, содержащий файлы с необходимыми драйверами. Если в него передается значение '' (пустая строка), то драйверы должны находиться в текущем каталоге. Это же значение должно передаваться DriverPath, если необходимые BGI-файлы преобразованы при помощи утилиты BINOBJ в файлы типа .OBJ, а затем скомпанованы с программой в EXE-файл.
Пример инициализации графического режима приведен на рис. 19.1 (в разд. 19.2.2).
19.2.1.2. Процедура CloseGraph. Для окончательного завершения работы в графическом режиме необходимо всегда производить вызов процедуры CloseGraph. Эта процедура не имеет параметров. Она очищает экран, переводит адаптер в текстовый режим и, если возможно, выгружает из памяти все BGI-драйверы и штриховые шрифты. Последующий возврат в графические режимы возможен только через повторную инициализацию
19.2.2. Обработка ошибок инициализации
Процедура InitGraph возвращает также и результат своей работы в параметре GraphDriver. В случае ошибки он может принимать значения, приведенные в табл. 19.1.
таблица 19.1.
Значение | Объяснение |
-2 | Нет графического адаптера |
-3 | Не найден файл драйвера |
-4 | Ошибка в драйвере (в его коде) |
- 409 -
-5 | Не хватает памяти для загрузки драйвера |
-10 | Невозможный режим для выбранного драйвера. |
-15 | Нет такого драйвера |
Если же ошибок при инициализации не обнаружено, то в параметре GraphDriver возвращается номер адаптера из приведенного в разд. 19.2.1.1 списка констант.
В модуле Graph реализован еще один способ проверки результата проведения графической операции. Он осуществляется с помощью функции
GraphResult : Integer
которая возвращает код результата последнего вызова одной из процедур или функций, указанных в табл. 19.2.
Таблица 19.2
Bar Bar3D ClearViewPort CloseGraph DetectGraph DrawPoly FillPoly FloodFill GetGraphMode | ImageSize InitGraph InstallUserDriver InstallUserFont PieSlice RegisterBGIdriver RegisterBGIfont SetAllPalette | SetFillPattern SetFillStyle SetGraphBufSize SetGraphMode SetLineStyle SetPalette SetTextJustify SetTextStyle |
Таблица кодов, возвращаемых GraphResult, и расшифровка их содержания приведена ниже при описании функции GraphErrorMsg, так как обычно эти функции используются совместно. Заметим, что после одного вызова GraphResult следующий ее вызов даст нулевое значение, поэтому для дальнейшего использования результатов тестирования рекомендуется сохранять значение этой функции в какой-либо переменной.
Для быстрой выдачи простого сообщения о типе ошибки графической системы используется функция, преобразующая результат вызова функции GraphResult в сообщение, которое можно вывести на экран процедурой Write. Эта функция объявлена как:
- 410 -
GraphErrorMsg(ErrorCode : Integer) : String;
Константы кодов ошибок, определенные в модуле Graph, и соответствующие им сообщения приведены в табл.19.3.
Таблица 19.3