Otevřít hlavní menu

Změny

RegisterBGIdriver

Přidáno 3 311 bajtů, 4. 10. 2012, 16:31
bez shrnutí editace
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.
[[Category:Graph]]
[[Category:Funkce Graph]]