Основы алгоритмизации и программирования. Часть четвертая. Файловая система Turbo Pascal. Асламова В.С - 32 стр.

UptoLike

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