Почему может возникать эта ошибка?
Начнём с простого. А вызывается ли InitGraph вообще? Как вызвать InitGraph?
Пример полной программы:
var
ErrorCode : Integer;
GrDriver, GrMode : Integer;
begin
GrDriver := Detect;
InitGraph(GrDriver, GrMode, 'X:\BP');
ErrorCode := GraphResult;
if ErrorCode <> grOk then
begin
WriteLn('Ошибка инициализации графики:');
WriteLn(GraphErrorMsg(ErrorCode));
Halt(1);
end;
ClearDevice;
SetColor(White);
Rectangle(0, 0, GetMaxX, GetMaxY);
Line(0, 0, GetMaxX, GetMaxY);
Line(0, GetMaxY, GetMaxX, 0);
ReadLn;
CloseGraph;
end.
Для успешной инициализации довольно важен третий параметр.
В School Pak теоретически он должен быть равен 'X:\BP', но, начиная с версии 1.3, это уже не важно, всё равно будет работать. Сделано всё с помощью резидента, резидент работает только внутри School Pak, модуль Graph не затронут.
В других версиях Turbo Pascal вместо 'X:\BP' должен быть путь к BGI драйверам (например, 'C:\BP\BGI' или 'C:\TP7'). Как вариант, можно EGAVGA.BGI положить в один каталог с программой, тогда должно быть
Все пути указаны, EGAVGA.BGI на месте, а графика всё равно не инициализируется? Этому есть объяснение. Нужно убедиться, что этот файл доступен для записи. У него не должно быть атрибута только–чтение, прав должно хватать для записи. Файл не может быть находиться на CD или DVD. В этот файл никогда ничего не пишется, но он открывается на запись. А если не получается открыть на запись, то не открывается никак.
Глупо, правда? В School Pak эта ошибка исправлена. Судя по всему, это единственная версия, где исправили эту ошибку. И не только эту.
Если School Pak использовать ну никак нельзя, а проблему надо решить, добавьте команду FileMode := 0; перед InitGraph.
Скачать EGAVGA.BGI
School Pak
Не все версии Turbo Pascal одинаково хороши. Надоело докачивать довески? Пора установить Turbo Pascal School Pak