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

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
pascal:modules [20/10/2009 09:40] – создано ybezrukovpascal:modules [24/04/2010 12:29] (текущий) dnaumov
Строка 1: Строка 1:
 ===== Модули ===== ===== Модули =====
 +FIXME
  
 +Модуль (Unit) - это отдельный файл. Как правило, он находится в том же каталоге, что и основная программа. Модули нужны для облегчения своего нелегкого труда программиста. Если Вы планируете использовать одну и туже процедуру в своих программах, то пора задуматься о написании модуля!
 +
 +Пример программы и модуля к ней. В программе графический режим включается и выключается с помощью процедур //GraphIni// и //GraphEnd// соответственно. Эти процедуры записаны в модуле //mygraph//. На экране Вы увидите окружность, которая двигается. 
 +
 +<code pascal|Оформление программы. Содержимое файла moving.pas>
 +program moving;
 +
 +uses
 +  oglgraph, crt, mygraph;
 +
 +var x,y,vx,r : integer;
 +    
 +
 +begin
 +  GraphIni; {открываем графическое окно - процедура из модуля 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.
 +
 +</code>
 +
 +<code pascal|Оформление модуля. Содержимое файла mygraph.pas>>
 +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 {часть модуля, которая исполняется при вызове его из программы в разделе uses}
 +
 +end.
 +</code>