Константа | Код | Сообщение об ошибке | Перевод и пояснения |
grOk | No error | Ошибки нет | |
grNoInitGraph | -1 | (BGI) Graphics not installed (use InitGraph) | Графика не инициализирована |
grNotDetected | -2 | Graphics hardware not detected | Графический адаптер не найден |
grFileNotFound | -3 | Device driver file not detected | BGI-файла нет в указанном каталоге |
grInvalidDriver | -4 | Invalid device driver file | BGI-файл содержит ошибочный код |
grNoLoadMem | -5 | Not enough memory to load driver | Нет места в ОЗУ для загрузки драйвера |
grNoScanMem | -6 | Out of memory in scan fill | При работе процедуры FillPoly не хватает рабочей памяти |
grNoFloodMem | -7 | Out of memory in flood fill | При работе процедуры FloodFill не хватает рабочей памяти |
grFontNotFound | -8 | Font file not found | CHR-файла нет в указанном каталоге |
grNoFontMem | -9 | Not enough memory to load font | Нет места в ОЗУ для загрузки шрифта |
grInvalidMode | -10 | Invalid Graphics mode for selected driver | Невозможный режим для выбранного драйвера |
- 411 -
grError | -11 | Graphics error | Ошибка графики |
grIOError | -12 | Graphics I/O error | Ошибка ввода-вывода графики |
grInvalidFont | -13 | Invalid font file | В файле шрифта неправильный код |
grInvalidFontNum | -14 | Invalid font number | Несуществующий номер шрифта |
grInvalidDeviceNum | -15 | Invalid device number | Несуществующий номер адаптера |
Простейший блок инициализации графического режима в программе может выглядеть, как показано на рис. 19.1.
| 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('Программа остановлена');
| Halt(1)
| end {if}
| END;
| {{==ПРИМЕР ИНИЦИАЛИЗАЦИИ}==}
| BEGIN
| GrInit; {вызов инициализации}
| Line(0, 0, GetMaxX,GetMaxY); {работа с графикой….}
| Readln; {пауза до нажатия ввода}
| CloseGraph {закрытие режима графики}
| END.
Рис. 19.1
- 412 -
В дальнейшем процедуру GrInit лучше записать в отдельный файл (например, INITGRAF.PAS) и использовать директиву включения этого файла при компиляции (что и сделано во всех остальных примерах). Такой блок всегда включает стандартный графический режим максимального разрешения. Однако это не всегда необходимо. На адаптере CGA, например, уменьшение разрешения дает возможность использовать большее количество цветов, а на адаптерах EGA и VGA увеличивает количество видеостраниц. Ниже мы рассмотрим процедуры, позволяющие определять тип установленного графического адаптера и режимы, которые могут быть установлены для него.
19.2.3. Классификация и анализ графических режимов
Возможные графические режимы для различных адаптеров приведены в табл. 19.4. Во втором столбце приведены имена предопределенных констант, которые можно передавать в процедуры, управляющие графическими режимами. Последний столбец показывает количество полноэкранных изображений, которые могут храниться в памяти видеоадаптера одновременно.
Таблица 19.4