Для перевода системы в графический режим можно написать отдельную процедуру, которую затем можно будет использовать для написания программ, так как не очень-то удобно каждый раз записывать в программе целый набор операторов инициализации.
Procedure Graphinterface;
Var gd, gm, error:Integer;
s:String;
Begin
gd:=detect;
s:=' ';
Initgraph(gd,gm,s);
error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end
end.
Для запуска графического режима в Паскаль необходимо:
- Подключить к программе модуль Graph с помощью оператора использования Uses, который записывается сразу после заголовка программы. Например, можно записать так:
Program Graphika;
Uses Graph;
- При переключении в графический режим программа должна определить тип видеоадаптера. Это можно сделать двумя способами. Либо указать в программе тип видеоадаптера, либо дать возможность программе самой определить тип видеоадаптера. Для этого в программе вводится переменная с каким-нибудь именем (идентификатором), например, «gd», «grdriver», «graphdriver» (в наших примерах мы будем использовать идентификатор «gd»). Для этой переменной указывается целый тип данных – Integer. Т.е. этой переменной мы можем присвоить какое-то целое число. Ниже приведена таблица зависимости значения переменной от типа установленного видеоадаптера.
Например, если у Вас установлен адаптер VGA, то переменной «gd» необходимо присвоить значение «9» (gd:=9).
Если Вы не знаете какой видеоадаптер нужно указывать в программе, то нужно предоставить ей самой определить какой адаптер необходимо использовать. Для этого используется специальная процедура Detect. Она способствует автоматическому распознаванию типа видеоадаптера. Кроме того, вместо слова Detect можно использовать нулевое значение. Таким образом, в программе необходимо записать: gd:=detect, либо gd:=0. (в наших программах мы будем использовать автоматическое распознавание видеоадаптера с помощью процедуры Detect).
- Помимо указания видеоадаптера, необходимо задать определенный графический режим. Как правило, видеоадаптеры могут работать в различных графических режимах. Эти режимы отличаются друг от друга разрешением и набором доступных цветов. Для указания в программе необходимого графического режима необходимо включить в текст программы еще одну переменную, например, gm или grmode, или GraphMod( в наших программах переменная будет называться gm). Эта переменная также имеет целый тип данных – Integer. Ниже приведена таблица зависимости значения переменной от типа установленного видеоадаптера и необходимого режима его работы.
Так как в наших программах тип видеоадаптера определяется автоматически, мы не будем указывать тип графического режима. По умолчанию, этой режим будет определен с самым высоким разрешением для данного адаптера.
- Помимо перечисленных выше переменных для указания типа видеоадаптера (gd), и типа графического режима (gm) необходимо указать переменную, которая определяет путь доступа к каталогу (маршрут), в котором находятся графические драйверы. Для этого создаем переменную (в разделе Var), например «S» и указываем для нее тип данных String. Затем в программе в разделе операторов (между begin и end) этой переменной присваиваем значение «C:\FPC\2.2.2\units\i386-win32\graph». В этой директории находятся файлы graph.o и graph.ppu. Эти файлы отвечают за графический режим. Поэтому мы и указываем путь до этих файлов.
Для того чтобы не указывать этот путь, можно скопировать файлы graph.o и graph.ppu из директории C:\FPC\2.2.2\units\i386-win32\graph и вставить их в директорию C:\FPC\2.2.2\bin\i386-win32. После этого переменной «S» не надо присваивать значение C:\FPC\2.2.2\units\i386-win32\graph. Достаточно просто указать в программе: s:=’’. Т.е. переменной «S» присваивается значение пустой строки.
- Переключение дисплея в графический режим производится с помощью процедуры InitGraph. Эта процедура записывается в разделе операторов. В круглых скобках записываются параметры этой процедуры: тип видеоадаптера, тип режима видеоадаптера, путь доступа к папке, в которой находятся графические драйверы.
В наше случае процедура будет иметь вид: InitGraph (gd; gm; s). Кстати, переменную «s», которая используется для указания пути можно вообще не использовать. Можно напрямую указать в процедуре InitGraph параметры (gd; gm; ‘ ’).
- Очень часто при включении графического режима могут возникнуть различные ошибки. Они могут быть связаны с отсутствием графического драйвера или неправильными значениями параметров. Для того чтобы определить тип ошибки используется функция GraphResult. Для этой функции нам необходимо создать еще одну переменную в разделе описания переменных Var. Назовем эту переменную «error». Эта переменная имеет целочисленный тип данных Integer. В программе после записи процедуры InitGraph необходимо записать такие строки:
error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end
Для функции GraphResult определены следующие коды ошибок:
- 1 графика не установлена (используйте процедуру InitGraph);
- 2 графическая аппаратура не найдена;
- 3 драйвер графического устройства не найден;
- 4 неверный файл драйвера графического устройства;
- 5 не хватает памяти для загрузки драйвера;
- 6 выход за границы при просмотре области закраски;
- 7 выход за границы памяти при закрашивании;
- 8 файл шрифта не найден;
- 9 не хватает памяти для загрузки шрифта;
- 10 недопустимый графический режим для выбранного драйвера.
Строка №1. Таким образом получается, что если в программе возникает ошибка, то переменной «error» присваивается значение функции GraphResult (от 1 до 10, в зависимости от типа ошибки).
Строка №2. GrOk означает отсутствие ошибки. Выражение if error<>GrOk означает, что ошибка есть (знак <> означает неравно). Таким образом, если есть ошибка, то выполняются операции в строке №4 и №5. Функция GraphErrorMsg возвращает строку сообщения об ошибке для заданного кода. И последняя процедура Halt – стандартная процедура, которая завершает выполнение программы и выполняет возврат в операционную систему.
- Завершение работы в графическом режиме производится с помощью процедуры CloseGraph, которая выгружает драйвер из памяти и восстанавливает предыдущий видеорежим.
Предыдущая статья : Графика в Паскаль.
Оглавление : Уроки Паскаль. Графика.
Следующая статья : Процедуры Setcolor, Line.
Комментарии
При этом alt linux копировать файлы не дает.