Компиляция и использование модулей

Модуль компилируется точно таким же образом, как и обычные подпрограммы. Но так как модуль не является непосредственно выполняемой единицей, то в результате его компиляции образуется дисковый файл с расширением.TPU (Turbo Pascal Unit), при этом имя файла берется из имени файла с исходным текстом модуля.

Для доступа к ресурсам модуля используется конструкция, называемая спецификацией модуля:

USES

U1, u2, u3;

Эта спецификация должна следовать непосредственно за заголовком программы; если модуль использует объекты другого модуля, то такая спецификация должна следовать после служебного слова interface. Необходимо особо отметить следующие важные моменты, связанные с использованием модулей:

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

Program p;

Uses A;

Var x: integer;

Begin

….

End.

Для того, чтобы в программе P иметь доступ к интерфейсной переменной x необходимо задать составное имя

A.x:=Round(x);

13. Возможны случаи косвенного использования

Например:

unit A; unit B;

interface interface

....... uses A;

end........

end.

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

Например:

program P;

uses

B;

.....

end.

14. Схема использования модулей может иметь древовидную структуру, но не перекрывающуюся.

Так, например, следующие отношения являются ошибочными:

unit A; unit B;

interface interface

uses B; uses B;

..........

end. end.

15. Если в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены перед началом выполнения программы, в которой используется данный модуль. Если программа использует несколько модулей, то их разделы инициализации будут выполнены в том же порядке, в котором эти модули перечислены в спецификации использования.

16. Можно использовать директиву $U для переопределения имени файла. Эта директива имеет параметр, который трактуется как "настоящее" имя файла с данным модулем. Она должна находиться непосредственно перед именем модуля в спецификации использования. Например, конструкция:

uses {$U MY} MyUnit;

приведет к тому, что компилятор будет искать код модуля MyUnit в дисковом файле MY.TPU.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: