Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример 1.15



Пусть Unit U1 из примера 1.14 в секции реализации подключает модуль U2. Пусть модуль U2 имеет следующий интерфейсный раздел:

Unit U2;

Inteface

Uses U1;

Procedure Dni (Var Dd: Ned);

Тип Ned объявлен в модуле U1. Поскольку на него имеется ссылка в интерфейсной секции модуля U2, то в директиве Uses модуля U2 необходимо подключить модуль U1.

Транслятор такую ситуацию закольцованности не пропускает. Решение – в создании третьего модуля U3, куда будет вынесено объявление типа Ned:

Unit U3;

Intereface

Type

Ned = (Pn, Vt, Sr, Ch, Pt, Sb, Vs);

Implementation

End.

Из модуля U1 (см. пример 1.14) необходимо убрать объявление типа Ned. Из предложения Uses модуля 2 – убрать подключение модуля U1. В модулях U1 и U2 в интерфейсных разделах необходимо подключить модуль U3. В результате предложения Uses в интерфейсных разделах модулей U1 и U2 примут вид:

Uses Dos, U3; {В модуле U1}

Uses U3; {В модуле U2}

Достоинства использования модулей Unit:

1) Наличие модулей позволяет использовать модульное программирование, то есть представлять программу в виде модулей и при необходимости корректировать отдельные модули, а не всю программу в целом.

2) Модули компилируются независимо друг от друга; при подключении модуля к другой программе он не компилируется заново. Таким образом, сокращается время компиляции больших программ. Это же справедливо и при корректировке отдельных модулей – заново компилируются только зависящие от них модули.

3) Наличие модулей позволяет создавать большие программы с суммарным размером исполнимого кода большим, чем 64К.

1.6.4. Подключение к программе внешнего файла

Вторым способом подключения внешних процедур и функций к программе является использование директивы компилятора «Включение в программу внешнего текстового файла»

{$I <Имя_файла>}

Данная директива сообщает компилятору о необходимости включить в компиляцию названный файл. Таким образом, отлаженные законченные блоки программы могут быть записаны в отдельные файлы и заменены в программе на директивы их включения. Это замедляет процесс компиляции, но экономит место в программе (она может превратиться в цепочку подключаемых файлов) и упрощает отладку программ.

Примеры включения исходных файлов:

{$I F1. pas} (или эквивалентно {$I F1})

{$I C:\Dir1\Proc1.ini}

По умолчанию расширением <Имени_файла> является pas.

Включаемый файл должен удовлетворять условиям:

1) при его включении на место директивы {$I } он должен вписаться в структуру и смысл программы без ошибок;

2) он должен содержать законченный смысловой фрагмент, то есть блок от Begin до End (например, тело процедуры) должен храниться целиком в одном файле;

3) включаемый файл не может быть указан в середине раздела операторов.

Включаемые файлы сами могут содержать директивы {$I }. Максимальный уровень такой вложенности равен восьми.

К недостаткам такого подключения к программе внешнего файла по сравнению с использованием библиотечных модулей можно отнести следующее:

а) подключаемые файлы каждый раз компилируются заново. Это увеличивает время компиляции;

б) размер программы не может превышать 64К.





Дата публикования: 2014-12-11; Прочитано: 131 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...