Почему может возникать эта ошибка?
Начнём с простого. А вызывается ли InitGraph вообще? Как вызвать InitGraph? OK, показываю:
uses Graph; 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 не затронут.
В других версиях вместо 'X:\BP' должен быть путь к BGI драйверам (например, 'C:\BP\BGI' или 'C:\TP7'). Как вариант, можно EGAVGA.BGI положить в один каталог с программой, тогда должно быть InitGraph(GrDriver, GrMode, '');
Все пути указаны, EGAVGA.BGI на месте, а графика всё равно не инициализируется? Я знаю, почему это может быть. Нужно убедиться, что этот файл доступен для записи. У него не должно быть атрибута только–чтение, прав должно хватать для записи. Файл не может быть находиться на CD или DVD. В этот файл никогда ничего не пишется, но он открывается на запись. А если не получается открыть на запись, то не открывается никак.
Глупо, правда? Я знаю. В School Pak эта ошибка исправлена. Судя по всему, это единственная версия, где исправили эту ошибку. И не только эту.
Если School Pak использовать ну никак нельзя, а проблему надо решить, добавьте команду FileMode := 0; перед InitGraph.
Для блогов:
Для форумов: