Функция RegisterBGIDriver()

Модуль GRAPH

Передает графической системе указатель на драйвер устройства.

Объявление:

Function RegisterBGIDriver(Driver : Pointer) : Integer;

Режим:

Protected,  Real

Замечание:

Драйвер должен быть зарегистрирован перед обращением к InitGraph.

Если происходит ошибка, то функция возвращает значение меньшее нуля, иначе возвращается внутренний номер драйвера в системе.

Эта подпрограмма дает возможность пользователю загрузить и зарегистрировать драйвер, передавая его расположение в памяти в функцию RegisterBGIDriver.

При вызове InitGraph, будет использоваться этот драйвер, вместо загружаемогос диска модулем Graph.
Зарегистрированный пользователем драйвер может быть загружен с диска в кучу (heap) или преобразован в *.OBJ файл (с помощью BINOBJ.EXE) и скомпонован с *.EXE

Возвращает ошибку grInvalidDriver, если заголовок драйвера не распознан.

Следующая программа загружает драйвер CGA драйвер в кучу, регистрирует его графической системе и вызывает InitGraph:
Program LoadDriv; Uses Graph; Var Driver, Mode : Integer; DriverF : File; DriverP : Pointer; Begin { Открываем файл драйвера, считываем и регистрируем его } Assign(DriverF, 'C:\BP\BGI\CGA.BGI'); Reset(DriverF, 1); GetMem(DriverP, FileSize(DriverF)); BlockRead(DriverF, DriverP^, FileSize(DriverF)); If RegisterBGIDriver(DriverP) < 0 Then Begin Writeln('Ошибка регистрации драйвера: ', GraphErrorMsg(GraphResult)); Halt(1); End; { Инициализация графики } Driver:=CGA; Mode:=CGAHi; InitGraph(Driver, Mode, ''); If GraphResult < 0 Then Halt(1); OutTextXY(GetMaxX Div 2, GetMaxY Div 2, 'Driver loaded successfully'); ReadLn; CloseGraph; End. Программа загружает файл драйвера CGA с диска, регистрирует его. Затем вызывается InitGraph, чтобы инициализировать графическую систему. При желании, вы можете встроить несколько драйверов непосредственно в ваш *.EXE файл. Таким образом, графические драйверы, которые необходимы для работы вашей программы, будут встроены в нее. Встроить драйвер в вашу программу можно так: Запустить программу binobj.exe или bgiobj.exe на файле драйвера. Скомпоновать полученный *.OBJ файл с вашей программой. Зарегистрировать файл драйвера перед вызовом InitGraph

Пример:

Uses Graph;
 
  Var Driver, Mode : Integer;
           DriverF : File;
           DriverP : Pointer;
  Begin
   { Загружаем и регистрируем файл драйвера }
   Assign(DriverF, 'CGA.BGI');
   Reset(DriverF, 1);
   GetMem(DriverP, FileSize(DriverF));
   BlockRead(DriverF, DriverP^, FileSize(DriverF));
   If RegisterBGIDriver(DriverP) < 0 Then
    Begin
     WriteLn('Ошибка регистрации драйвера: ', GraphErrorMsg(GraphResult));
     Halt(1);
    End;
   { Инициализируем графику }
 Driver:=CGA;
 Mode:=CGAHi;
 InitGraph(Driver, Mode, '');
 If GraphResult < 0 Then Halt(1);
 OutTextXY(GetMaxX Div 2, GetMaxY Div 2, 'Driver loaded successfully');
 ReadLn;
 CloseGraph;
End.