Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Как используются модули

Читайте также:
  1. Анамнез – совокупность сведений, сообщаемых больным или его родственниками. Такие сведения используются при установлении диагноза.
  2. В основном используются протокол TCP/IP
  3. Для двойного слепка используются слепочные массы
  4. Для характеристики здоровья населения используются три группы показателей.
  5. Для чего используются скрипты.
  6. Иммуномодулирующие средства.
  7. используются гормональные препараты
  8. Используются.
  9. Какие блоки используются для записи алгоритмов

В Паскале определены 3 режима компиляции:

· Compile

· Make

· Build.

При компиляции модуля или программы в режиме Compile все модули, которые они используют, должны быть откомпилированы, и храниться как машинный код с расширением .tpu, а не исходный текст на Паскале. При этом компилятор Паскаля предполагает, что pas -файл, в котором находится исходный текст модуля, а, следовательно, и соответствующий tpu -файл, имеет такое же имя (как в заголовке Unit). Если имя модуля, например, MyUtilit, то компилятор будет искать файл MyUtilit. pas. Это предположение можно отменить с помощью директивы компилятора U. Пусть, например, в программе используются модули Dos, Crt и MyUtilit, который хранится в модуле Util. pas. Тогда следует использовать следующее предложение Uses:

Uses Dos, Crt, {$U Util. pas} MyUtilit;

При компиляции режиме Make компилятор проверяет наличие tpu -файлов для каждого объявленного модуля. Если какой-либо из файлов не обнаружен, компилятор пытается отыскать соответствующий pas -файл, и, если исходный файл найден, приступает к его компиляции. Кроме того, в этом режиме, если в исходный текст используемого модуля были внесены изменения, то модуль будет перекомпилирован.

В режиме Build существующие tpu -файлы игнорируются, и компилятор пытается отыскать и компилировать соответствующий pas -файл для каждого объявленного в разделе Uses модуля.

Модуль может находиться в отдельном файле с расширением .tpu, а также его можно переслать в библиотеку модулей — в файл с расширением .tpl.

Для использования модуля применяется предложение Uses. Когда компилятор встречает предложение Uses, он прибавляет информацию из секции интерфейса каждого модуля к таблице символов программы и присоединяет машинный код из секции реализации к самой программе. Модули присоединяются в указанном порядке, т.е. в списке предложения Uses модуль должен быть указан после всех модулей, которые он использует.

Ссылки на описания модуля

Как только модуль включен в программу, все его описания из секции интерфейса становятся доступными для программы. Пусть, например, имеется модуль со следующей секцией интерфейса:

Unit MyUnit;

Interface

Const

MyValue = 915;

Type

MyStars = (Deneb, Antares, Betelgeuse);

Var

MyWord: String [20];

Procedure SetMyWord (Star: MyStars);

Function TheAnswer: Integer;

Можно написать следующую программу:

Program TestProg;

Uses

MyUnit;

Var

i: Integer;

AStar: MyStars;

Begin

WriteLn (MyValue);

AStar: = Deneb;

SetMyWord (AStar);

...

WriteLn (MyWord);

i: = TheAnswer;

WriteLn (i)

End.

В программе, использующей модуль, некоторые идентификаторы могут быть переопределены. В этом случае программа будет использовать собственные определения, т.к. они описаны позже, чем определения в модуле. Однако и в этой ситуации можно ссылаться на идентификаторы из модуля, используя составные идентификаторы:

Program TestProg1;

Uses MyUnit;

Const

MyValue = 22; { переопределение для MyValue }

Var i: Integer;

AStar: MyStars;

 

Function TheAnswer: Integer; { переопределение для функции TheAnswer }

Begin

TheAnswer: = 1

End;

Begin

 

WriteLn (MyValue); { из программы }

 

WriteLn (MyUnit. MyValue); { из модуля }

AStar: = Deneb;

SetMyWord (AStar);

 

...

 

WriteLn (MyWord);

 

i: = TheAnswer; { из программы }

WriteLn (i);

 

i: = MyUnit. TheAnswer; { из модуля }

WriteLn (i)

End.




Дата добавления: 2015-02-16; просмотров: 113 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав