2018-08-02 22:04:49 +03:00
|
|
|
|
<html>
|
|
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
|
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
|
|
|
|
|
<param name="Keyword" value="unit">
|
|
|
|
|
|
<param name="Keyword" value="interface">
|
|
|
|
|
|
<param name="Keyword" value="implementation">
|
|
|
|
|
|
<param name="Keyword" value="initialization">
|
|
|
|
|
|
<param name="Keyword" value="finalization">
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<param name="Keyword" value="Раздел интерфейса">
|
|
|
|
|
|
<param name="Keyword" value="Раздел реализации">
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</object>
|
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
|
|
|
|
|
<title></title>
|
|
|
|
|
|
<link rel="StyleSheet" href="../../default.css">
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
<body>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<H1>Структура модуля</H1>
|
|
|
|
|
|
<p>Модули предназначены для разбиения текста программы на
|
|
|
|
|
|
несколько файлов. В модулях описываются переменные, константы, типы,
|
|
|
|
|
|
классы, процедуры и функции. Для того чтобы эти объекты можно было использовать
|
|
|
|
|
|
в вызывающем модуле (которым может быть и основная программа), следует указать
|
|
|
|
|
|
имя файла модуля (без расширения .pas) в разделе <b><code>uses</code></b>
|
|
|
|
|
|
вызывающего модуля. Файл модуля (.pas) или откомпилированный
|
|
|
|
|
|
файл модуля (.pcu) должен находиться либо в том же
|
|
|
|
|
|
каталоге, что и основная программа, либо в подкаталоге <b>Lib</b>
|
|
|
|
|
|
системного каталога программы <b>PascalABC.NET</b>.</p>
|
|
|
|
|
|
<p>Модуль имеет следующую структуру:</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<blockquote>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p><code><b>unit</b> <code class="codeit">имя модуля</code>;</code></p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p><code><b>interface</b></code></p>
|
|
|
|
|
|
<p><code>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<code class="codeit">раздел интерфейса </code></code></p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p><code><b>implementation</b></code></p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p><code><code class="codeit">раздел реализации
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</code></code> </p>
|
|
|
|
|
|
<p><code><b>initialization</b></code></p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p><code><code class="codeit">раздел инициализации</code></code></p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p><code><b>finalization</b></code></p>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p><code><code class="codeit">раздел финализации</code></code></p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p><code><b>end</b>.</code> </p>
|
|
|
|
|
|
</blockquote>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Имеется также <a href="simplemodule.html">упрощенный
|
|
|
|
|
|
синтаксис модулей</a> без разделов интерфейса и реализации.</p>
|
|
|
|
|
|
<p>Первая строка обязательна и называется <b><font color="#FF0000"> <i>заголовком модуля</i></font></b>.
|
|
|
|
|
|
Имя модуля должно совпадать с именем файла.</p>
|
|
|
|
|
|
<p>Раздел интерфейса и раздел реализации модуля могут начинаться
|
|
|
|
|
|
с <a href="uses.html">раздела </a> <code><b><a href="uses.html">uses</a></b></code> подключения внешних
|
|
|
|
|
|
модулей и пространств имен .NET. Имена в двух разделах
|
|
|
|
|
|
<code><b>uses</b></code> не должны пересекаться.</p>
|
|
|
|
|
|
<p><i>Раздел </i><code>
|
|
|
|
|
|
<code class="codeit">интерфейса</code></code> включает объявление всех
|
|
|
|
|
|
имен, которые экспортируются данным модулем в другие модули (при подключении его
|
|
|
|
|
|
в разделе <b><code>uses</code></b>). Это могут быть
|
|
|
|
|
|
константы, переменные, процедуры, функции, классы, интерфейсы. Реализация
|
|
|
|
|
|
методов классов может быть дана прямо в разделе интерфейса, но это не
|
|
|
|
|
|
рекомендуется.</p>
|
|
|
|
|
|
<p><i>Раздел реализации</i> содержит реализацию всех процедур, функций
|
|
|
|
|
|
и методов, объявленных в разделе интерфейса. Кроме этого, в разделе реализации
|
|
|
|
|
|
могут быть описания внутренних имен, которые не видны вне модуля и используются
|
|
|
|
|
|
лишь как вспомогательные. </p>
|
|
|
|
|
|
<p><i>Раздел инициализации</i> и <i>р</i><i>аздел финализации</i>
|
|
|
|
|
|
представляют собой последовательность операторов, разделяемых символом <code>;</code>. Операторы из раздела
|
|
|
|
|
|
инициализации модуля выполняются до начала основной программы,
|
|
|
|
|
|
операторы из раздела финализации модуля
|
|
|
|
|
|
- после окончания основной программы.
|
|
|
|
|
|
Порядок выполнения разделов инициализации и разделов финализации подключенных
|
|
|
|
|
|
модулей непредсказуем. Как раздел инициализации, так и раздел финализации могут
|
|
|
|
|
|
отсутствовать. </p>
|
|
|
|
|
|
<p>Вместо разделов инициализации и финализации может
|
|
|
|
|
|
присутствовать только раздел инициализации в виде</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<blockquote>
|
|
|
|
|
|
<p><code><b>begin</b></code><br>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<i> последовательность операторов</i><br>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<b><code>en</code></b><code><b>d</b>.</code></p>
|
|
|
|
|
|
</blockquote>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p>Например:</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<blockquote>
|
|
|
|
|
|
<p><code><b>unit</b> Lib;</code></p>
|
|
|
|
|
|
<p><b><code>interface</code></b></p>
|
|
|
|
|
|
<p><code><b>uses</b> GraphABC;</code></p>
|
|
|
|
|
|
<p><code><b>const</b> Dim = 5;<br>
|
2025-11-11 22:04:03 +03:00
|
|
|
|
<b>var</b> Colors: <b>array</b> <b>of</b> integer := new integer[Dim];</code></p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
<p><code><b>function</b> RandomColor: integer;<br>
|
|
|
|
|
|
<b>procedure</b> FillByRandomColor;</code></p>
|
|
|
|
|
|
<p><b><code>implementation</code></b></p>
|
|
|
|
|
|
<p><code><b>function</b> RandomColor: integer;<br>
|
|
|
|
|
|
<b>begin</b><br>
|
|
|
|
|
|
Result := RGB(Random(255),Random(255),Random(255));<br>
|
|
|
|
|
|
<b>end</b>;<br>
|
|
|
|
|
|
<b>procedure</b> FillByRandomColor;<br>
|
|
|
|
|
|
<b>begin</b><br>
|
2025-11-11 22:04:03 +03:00
|
|
|
|
<b>for</b> <strong>var </strong>i := 0 <b>to</b> Dim-1 <b>do</b><br>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
Colors[i] := RandomColor; <br>
|
|
|
|
|
|
<b>end</b>;</code></p>
|
|
|
|
|
|
<p><code><b>initialization</b><br>
|
|
|
|
|
|
FillByRandomColor;<br>
|
|
|
|
|
|
<b>end</b>.</code></p>
|
|
|
|
|
|
</blockquote>
|
2025-11-07 16:12:31 +03:00
|
|
|
|
<p><a href="cyclemodules.html">Циклические ссылки между модулями</a> возможны при
|
|
|
|
|
|
определенных ограничениях.</p>
|
2018-08-02 22:04:49 +03:00
|
|
|
|
</body>
|
|
|
|
|
|
|
|
|
|
|
|
</html>
|