Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Пусть 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!