ВУЗ:
Составители:
Рубрика:
63
Раздел инициализации завершает текст модуля. Если он отсутствует,
то просто ставится слово end с точкой после конца последнего тела подпро-
граммы раздела реализации. В противном случае ставится слово BEGIN, и
далее программируются действия, которые будут произведены перед выпол-
нением основной программы (работа скомпилированной программы всегда
начинается с выполнения блоков инициализации используемых ею
модулей,
и лишь потом выполняется основной блок самой программы). Обычно в раз-
деле инициализации происходит заполнение стартовыми значениями
библиотечных переменных и какие-нибудь одноразовые действия, которые
должны выполниться именно в начале программы.
Например, если в подпрограммах модуля используются данные, хра-
нящиеся в файле с именем Sp_const.mdl, чтение из которого производится с
помощью файловой переменной f , раздел инициализации может иметь сле-
дующий вид:
begin
Assign (f,
′Sp_const.mdl′);
end.
Из программы компилятор генерирует согласно директиве Com-
pile/memory disk работоспособную объективную программу .EXE или .COM.
Из некоторого модуля с помощью Compile/memory disk получают объектный
модуль .TRU, который добавляется компоновщиком в другие программы или
модули с помощью USES - фразы.
В качестве ещё одного примера можно привести модуль SVGA256, с
помощью которого можно в программе пользователя подключить и исполь-
зовать предварительно
откомпилированный в объектный код драйвер
SVGA256.BGI. Файл с объектным кодом драйвера должен иметь имя
SVGA256.OBJ и располагаться в том же каталоге, что и данный модуль.
Текст модуля должен находиться в файле с именем SVGA256.TPU. Модуль
используется программой (*). В качестве задания предлагается расставить
комментарии в текстах модуля и программы (*).
В именах констант модуля использованы
параметры доступных гра-
фических режимов драйвера SVGA256, перечисленных в комментарии в
конце текста модуля.
{Модуль SVGA256}
unit SVGA256;
interface
Const x320y200 = 0;
64
X640y400 = 1;
X640y480 = 2;
X800y600 = 3;
X1024y768 = 4;
var SVGA, GMmode: integer;
Implementation
uses Graph;
procedure SVGA256Driver; external;
{$LSVGA256}
function AutoDetect: integer; far;
var D, M: integer;
begin
DetectGraph (D, M);
if (D= VGA)
{или (D = MCGA) или (D = IBM8514)}
then AutoDetect :=GMode
else AutoDetect :=grError;
end;
begin
SVGA :=InstallUserDriver (
′SVGA256′, @ AutoDetect);
if GraphResult <> grok
then
begin
writeln (
′Error installing SVGA256 driver′);
halt(1);
end;
if RegisterBGIDriver (@SVGA256Driver) <0
then
begin
writeln (
′Error registering SVGA256 driver′);
halt (1);
end;
end.
{параметры режимов драйвера
SVGA256:
VGA/MCGA 320x200x256
SuperVGA 640x400x256
Раздел инициализации завершает текст модуля. Если он отсутствует, X640y400 = 1;
то просто ставится слово end с точкой после конца последнего тела подпро- X640y480 = 2;
граммы раздела реализации. В противном случае ставится слово BEGIN, и X800y600 = 3;
далее программируются действия, которые будут произведены перед выпол- X1024y768 = 4;
нением основной программы (работа скомпилированной программы всегда var SVGA, GMmode: integer;
начинается с выполнения блоков инициализации используемых ею модулей, Implementation
и лишь потом выполняется основной блок самой программы). Обычно в раз- uses Graph;
деле инициализации происходит заполнение стартовыми значениями procedure SVGA256Driver; external;
библиотечных переменных и какие-нибудь одноразовые действия, которые {$LSVGA256}
должны выполниться именно в начале программы. function AutoDetect: integer; far;
Например, если в подпрограммах модуля используются данные, хра- var D, M: integer;
нящиеся в файле с именем Sp_const.mdl, чтение из которого производится с begin
помощью файловой переменной f , раздел инициализации может иметь сле- DetectGraph (D, M);
дующий вид: if (D= VGA)
begin {или (D = MCGA) или (D = IBM8514)}
Assign (f, ′Sp_const.mdl′); then AutoDetect :=GMode
end. else AutoDetect :=grError;
Из программы компилятор генерирует согласно директиве Com- end;
pile/memory disk работоспособную объективную программу .EXE или .COM. begin
Из некоторого модуля с помощью Compile/memory disk получают объектный SVGA :=InstallUserDriver (′SVGA256′, @ AutoDetect);
модуль .TRU, который добавляется компоновщиком в другие программы или if GraphResult <> grok
модули с помощью USES - фразы. then
В качестве ещё одного примера можно привести модуль SVGA256, с begin
помощью которого можно в программе пользователя подключить и исполь- writeln (′Error installing SVGA256 driver′);
зовать предварительно откомпилированный в объектный код драйвер halt(1);
SVGA256.BGI. Файл с объектным кодом драйвера должен иметь имя end;
SVGA256.OBJ и располагаться в том же каталоге, что и данный модуль. if RegisterBGIDriver (@SVGA256Driver) <0
Текст модуля должен находиться в файле с именем SVGA256.TPU. Модуль then
используется программой (*). В качестве задания предлагается расставить begin
комментарии в текстах модуля и программы (*). writeln (′Error registering SVGA256 driver′);
В именах констант модуля использованы параметры доступных гра- halt (1);
фических режимов драйвера SVGA256, перечисленных в комментарии в end;
конце текста модуля. end.
{Модуль SVGA256} {параметры режимов драйвера
unit SVGA256; SVGA256:
interface VGA/MCGA 320x200x256
Const x320y200 = 0; SuperVGA 640x400x256
63 64
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »
