Модуль (Unit) - это отдельный файл. Как правило, он находится в том же каталоге, что и основная программа. Модули нужны для облегчения своего нелегкого труда программиста. Если Вы планируете использовать одну и туже процедуру в своих программах, то пора задуматься о написании модуля!
Пример программы и модуля к ней. В программе графический режим включается и выключается с помощью процедур GraphIni и GraphEnd соответственно. Эти процедуры записаны в модуле mygraph. На экране Вы увидите окружность, которая двигается.
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.
> 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.