мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Это старая версия документа!


Модули

FIXME

Модуль (Unit) - это отдельный файл. Как правило, он находится в том же каталоге, что и основная программа. Модули нужны для облегчения своего нелегкого труда программиста. Если Вы планируете использовать одну и туже процедуру в своих программах, то пора задуматься о написании модуля!

Пример программы и модуля к ней. В программе графический режим включается и выключается с помощью процедур GraphIni и GraphEnd соответственно. Эти процедуры записаны в модуле MyGraph. На экране Вы увидите окружность, которая двигается.

программы
program moving;
 
uses
  oglgraph, crt, MyGraph;
 
var x,y,vx,r : integer;
 
 
begin
  GrapIni; {открываем графическое окно - процедура из модуля MyGraph}
  x:=getmaxx div 2; {начальные координаты объекта - середина экрана}
  y:=getmaxy div 2;
  vx:=1; {скорость движения}
  r:=50; {радиус окружности}
  repeat 
        clearviewport; {очистка пассивного окна отрисовки}
        SetFillStyle(4,yellow);
        FillEllipse(x,y,r,r);
        graphSwapBuffers; {смена окон отрисовки - мгновенное отображение на дисплее пассивного окна для отрисовки}
        delay(10);
        x:=x+vx;
        if (x+r>=getmaxx) or (x-r<=0) then vx:=-vx;
   until graphkeypressed;
 
  GraphEnd; {закрываем графическое окно - процедура из модуля MyGraph}
end.
модуля
unit MyGraph; {заголовок модуля}
interface      
 
uses crt, oglgraph; {описание используемых библиотек в модуле}
 
var
   gd, gm   : integer;
 
{заголовки доступных из программы процедур}
Procedure GraphIni; 
Procedure GraphEnd;
 
implementation {содержимое модуля - сами процедуры и функции}
 
Procedure GraphIni; {процедура инициализации графического окна}
begin
   gd:=detect;
   gm:=detectmode;
   initGraph(gd,gm,'');
   if Graphresult<>GrOk then
      begin
         writeln('Graphics is not Ok');
         halt(1);
      end else
         writeln('GraphResult = ',graphresult);
   SetDoubleBuffer(true);      	  
   clearviewport;
   delay(300);
end;
 
Procedure GraphEnd; {процедура закрытия графического окна}
begin
   SetDoubleBuffer(false);
   clearviewport;
   CloseGraph;
end;
 
begin {часть модуля, которая исполняется при вызове его из программы}
 
end.