pascalabcnet/PABCNetHelp/LangGuide/Modules/uses.html

85 lines
3.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link rel="StyleSheet" href="../../default.css">
<style type="text/css">
.auto-style1 {
font-family: monospace;
font-size: 10pt;
color: #000080;
}
</style>
</head>
<body>
<H1>Раздел uses </H1>
<p>Раздел <b><code>uses</code></b> состоит из нескольких подряд идущих секций
<strong><span class="auto-style1">uses</span></strong>, каждая из которых имеет
вид:</p>
<blockquote>
<p><b><code>uses</code></b> <i>список имен</i><code>;</code></p>
</blockquote>
<p>Имена в списке перечисляются через запятую и могут быть либо
именами подключаемых внешних модулей <b>PascalABC.NET</b>,
либо пространствами имен .NET. Например:</p>
<blockquote>
<p><b><code>uses</code></b><code> System, System.Collections.Generic, MyUnit;</code></p>
</blockquote>
<p>Здесь <code>MyUnit</code> - модуль
<b>PascalABC.NET</b>, представленный в виде исходного
текста или откомпилированного .pcu-модуля, <code>
System</code> и <code>System.Collections.Generic</code>
- пространства имен .NET.</p>
<p>В модуле или основной программе, которая содержит раздел
<b><code>uses</code></b>, можно использовать все имена из
подключаемых модулей <b>PascalABC.NET</b> и пространств
имен .NET. Основное отличие между модулями и
пространствами имен .NET состоит в том, что модуль
содержит код, а пространства имен .NET содержат лишь
имена - для использования кода его необходимо подключить с помощью
<a href="../CompilerDirectives/index_directives.html">директивы
компилятора</a> <code>{$reference</code> <i>ИмяСборки</i><code>}</code>,
где <i>ИмяСборки</i> - имя dll-файла,
содержащего .NET-код. Другое не менее важное отличие
состоит в том, что в модуле или основной программе нельзя использовать имена,
определенные в другом модуле, без подключения этого модуля в разделе <b>
<code>uses</code></b>.
Напротив, если сборка .NET подключена директивой
<code>$reference</code>, то можно использовать ее имена,
явно уточняя их пространством имен, не подключая это пространство имен в разделе
uses. Например:</p>
<blockquote>
<p><code><b>begin</b><br>
&nbsp; System.Console.WriteLine('PascalABC.NET');<br>
<b>end</b>.</code></p>
</blockquote>
<p>По умолчанию в первой секции <b><code>uses</code></b>
неявно первым подключается системный модуль PABCSystem, содержащий стандартные
константы, типы, процедуры и функции. Даже если раздел <b><code>uses</code></b>
отсутствует, модуль PABCSystem подключается неявно. Кроме того, по умолчанию с помощью неявной директивы
<code>$reference</code> подключаются сборки System.dll, System.Core.dll и
mscorlib.dll, содержащие основные .NET-типы.</p>
<p>Поиск глобальных имен осуществляется вначале в текущем модуле
или основной программе, затем во всех подключенных модулях и пространствах имен,
начиная с самого правого в секции <b><code>uses</code></b>
и заканчивая самым левым. При этом считается, что пространство
имен более правого модуля вложено в пространство имен более левого. Таким
образом, конфликта имен не происходит. Если необходимо использовать имя из
конкретного модуля или пространства имен, следует использовать запись </p>
<blockquote>
<p><i>ИмяМодуля</i><code>.</code><i>Имя</i></p>
</blockquote>
<p>или</p>
<blockquote>
<p><i>ИмяПространстваИменNET</i><code>.</code><i>Имя</i></p>
</blockquote>
<p>В качестве имени модуля может выступать также имя основной
программы если у нее присутствует заголовок <b><code>program</code></b>.</p>
</body>
</html>