Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
55
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

Совместное использование описаний

Можно модифицировать процедуру WriteXY таким образом, чтобы

она воспринимала дополнительный параметр, задающий прямоугольное

окно на экране:

procedure WriteXY(SomeWindow : WindRec;

X, Y : integer;

Message : string);

procedure ShowError(Somewindow : WindRec; ErrMsg : string);

Нужно учитывать, что две процедуры находятся в разных моду-

лях. Даже если вы описываете WindData в интерфейсной секции одно-

го модуля, то нет такого допустимого способа, с помощью которого

это описание могло бы быть доступно в другом модуле. Решение сос-

тоит в том, чтобы описать третий модуль, в котором содержится

только определение записи WindRec:

unit WindData;

interface

type

WindRec = record

X1, Y1, X2, Y2 : integer;

ForeColor,

BackColor : byte;

Active : boolean;

end;

implementation

end.

В добавление к тому, что модификация кода процедур WriteXY и

ShowError позволяет использовать новый параметр, в интерфейсной

секции модулей Display и Error теперь может использоваться

WindData. Это допустимо, так как модуль WindData не зависит от

своего оператора uses, а модули Display и Error ссылаются друг на

друга только в соответствующих секциях реализации.

Взаимозависимые модули могут быть полезны в отдельных ситуа-

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

их так, где это не требуется, программу станет сложней обслужи-

вать, и она будет больше подвержена ошибкам.

Глава 11. Динамически компонуемые библиотеки

Динамически компонуемые библиотеки (DLL) позволяют несколь-

ким прикладным программа Windows или DOS защищенного режима сов-

местно использовать код и ресурсы. В Borland Pascal вы можете как

использовать существующие DLL, так и написать свои собственные

DLL, которые можно применять в других программах.

Что такое dll?

DLL - это выполняемый модуль, содержащий программный код или

ресурсы, используемые другими прикладными программами или DLL.

Концептуально динамически компонуемая библиотека аналогичная мо-

дулю - они обеспечивают для программ процедуры и функции. Однако

между DLL и модулями имеются существенные различия. В частности,

модули компонуются статически, а DLL - динамически.

Когда программа использует процедуру или функцию из модуля,

копия кода этой процедуры или функции статически компонуется с

выполняемым файлом программы. Если две программы выполняются од-

новременно и используют одну и ту же процедуру и функцию модуля,

то в системе будет присутствовать две копии этой подпрограммы.

Эффективнее было бы использовать одну копию. Такую возможность

предоставляет DLL.

В отличие от модуля DLL не компонуется с использующей DLL

программой. Вместо этого код и ресурсы DLL находятся в отдельном

выполняемом файле с расширением .DLL. Этот файл должен присутс-

твовать при выполнении программы-клиента. Вызываемые программой

процедуры и функции динамически компонуются со своими точками

входа в используемой программе DLL.

Другое отличие модулей от DLL состоит в том, что модули мо-

гут экспортировать типы, константы, данные и объекты, а DLL -

только процедуры и функции.

Чтобы ее можно было использовать в программе Borland Pascal,

DLL не обязательно должна быть написана на Borland Pascal. Кроме

того, программы, написанные на других языках, могут использовать

DLL, написанные на Borland Pascal. DLL, таким образом, идеально

подходит при программных проектах, реализуемых на нескольких язы-

ках.

Соседние файлы в предмете Программирование на Pascal