RegisterBGIdriver: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
(Žádný rozdíl)

Verze z 4. 10. 2012, 16:31

Zaregistruje v grafickém systému driver BGI, který byl zaveden uživatelem nebo přilinkován.

Deklarace
function RegisterBGIdriver(driver: pointer): Integer;
Režim
Reálný, Chráněný
Poznámky
Driver musí být zaregistrován před voláním InitGraph.
V případě chyby vrací funkce hodnotu menší než 0, jinak vrací interní číslo driveru.
Tato funkce umožňuje uživateli zavést do paměti soubor s driverem a "zaregistrovat" driver předáním jeho umístění v paměti funkci RegisterBGIdriver. Pokud tento driver zadáte jako parametr v InitGraph, bude používán tento registrovaný driver (a nebude zaváděn z disku jednotkou Graph). Uživatelem registrované drivery mohou být buď zaváděny z disku na haldu (heap), nebo konvertovány do souboru .OBJ (pomocí programu BINOBJ.EXE) a přilinkovány přímo do souboru .EXE.
Pokud není rozpoznána hlavička driveru, vrátí se grInvalidDriver.
Následující program zavede driver pro adaptér CGA na haldu, zaregistruje jej v grafickém systému a zavolá InitGraph:
program LoadDriv;
uses Graph;
var
  Driver, Mode: Integer;
  DriverF: file;
  DriverP: Pointer;
begin
  { Otevření souboru s driverem, načtení do paměti,
   registrace }
  Assign(DriverF, 'CGA.BGI');
  Reset(DriverF, 1);
  GetMem(DriverP, FileSize(DriverF));
  BlockRead(DriverF, DriverP^, FileSize(DriverF));
  if RegisterBGIdriver(DriverP) < 0 then
  begin
    Writeln('Chyba při registrování driveru: ', GraphErrorMsg(GraphResult));
    Halt(1);
  end;
  { Inicializace grafiky }
  Driver := CGA;
  Mode := CGAHi;
  InitGraph(Driver, Mode, );
  if GraphResult < 0 then
    Halt(1);
  OutText('Driver zaveden uživatelským programem');
  Readln;
  CloseGraph;
end.
Tento program nejprve zavede soubor s driverem CGA z disku a zaregistruje jej u jednotky Graph. Potom se inicializuje grafický režim zavoláním InitGraph. Možná budete chtít zabudovat jeden či více driverových souborů přímo do souboru .EXE. Pokud tak učiníte, grafické drivery, které váš program potřebuje, budou vestavěné a k běhu programu bude potřeba jen soubor .EXE. Postup zabudování driveru do souboru .EXE je jednoduchý:
  • Driverový(é) soubor(y) zpracujte programem BINOBJ.
  • Výsledný(é) soubor(y) .OBJ přilinkujte do vašeho programu.
  • Před voláním InitGraph přilinkovaný(é) driverový(é) soubor(y) zaregistrujte.
Viz také
InitGraph


Vzorový příklad

{RgBGIdrv.PAS}
{ Vzorový příklad pro funkci RegisterBGIDriver.}
uses Graph;
var
  Driver, Mode: Integer;
  DriverF: file;
  DriverP: pointer;
begin
  { Otevírá soubor driveru,čte,zaznamená }
  Assign(DriverF, 'CGA.BGI');
  Reset(DriverF, 1);
  GetMem(DriverP, FileSize(DriverF));
  BlockRead(DriverF, DriverP^, FileSIze(DriverF));
  if RegisterBGIdriver(DriverP) < 0 then
  begin
     WriteLn('Chyba registrace driveru: ', GraphErrorMsg(GraphResult));
    Halt(1);
  end;
  { Inicializace grafiky }
  Driver := CGA;
  Mode := CGAHi;
  InitGraph(Driver, Mode,' ');
  if GraphResult < 0 then
    Halt(1);
  OutText('Driver zaveden programem');
  ReadLn;
  CloseGraph;
end.