Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_3.doc
Скачиваний:
44
Добавлен:
28.03.2015
Размер:
1.71 Mб
Скачать

6.16. Применение интерфейса для доступа к объекту dll-библиотеки

Если вы поместите свой класс в DLL-библиотеку, то при необходимости использовать его в главной программе столкнетесь с проблемой. Подключение модуля с классом к главной программе приведет к включению в нее кода всех методов класса, т.е. задача выделения класса в DLL-библиотеку не будет решена. Если же не подключить модуль с описанием класса, главная программа вообще не будет знать о существовании класса, и воспользоваться классом будет невозможно. Эта проблема решается с помощью интерфейсов. Покажем это на примере модуля ReadersUnit.

Сначала вынесем описание интерфейса ITextReader в отдельный модуль (например, ReaderIntf), чтобы этот модуль в дальнейшем можно было подключить к главной программе:

unit ReadersIntf;

interface

type

ITextReader = interface(IInterface)

...

end;

implementation

end.

Затем удалим описание интерфейса из модуля ReadersUnit, а вместо него подключим модуль ReaderIntf:

unit ReadersUnit;

interface

uses

ReaderIntf;

...

Наконец включим скорректированный модуль ReadersUnit в DLL-библиотеку, которую назовем ReadersLib:

library ReadersLib;

uses

SysUtils, Classes, ReadersUnit;

{$R *.res}

begin

end.

Вроде бы все готово, и теперь в главной программе достаточно подключить модуль ReaderIntf и работать с объектами через интерфейс ITextReader (рисунок 6.6).

Рисунок 6.6. Схема получения программы и DLL-библиотеки

Но постойте! А как в программе создавать объекты классов, находящихся в DLL-библиотеке? Ведь в интерфейсе нет методов для создания объектов! Для этого определим в DLL-библиотеке специальную функцию и экспортируем ее:

library ReadersLib;

...

function GetDelimitedReader(const FileName: string;

const Delimiter: Char = ';'): ITextReader;

begin

Result := TDelimitedReader.Create(FileName, Delimiter);

end;

exports

GetDelimitedReader;

begin

end.

В главной программе импортируйте функцию GetDelimitedReader, чтобы с ее помощью создавать объекты класса TDelimitedReader:

program Example;

uses

ReadersIntf;

function GetDelimitedReader(const FileName: string;

const Delimiter: Char = ';'): ITextReader;

external 'ReadersLib.dll' name 'GetDelimitedReader';

var

Intf: ITextReader;

begin

Intf := GetDelimitedReader;

...

end.

Теперь вы знаете, как разместить объекты в DLL-библиотеке. Смело пользуйтесь динамически загружаемыми библиотеками, не теряя преимуществ ООП.

6.17. Итоги

Вы прочитали и усвоили весь материал всех предыдущих глав? Тогда спешим вас поздравить! Можете смело утверждать, что знаете язык программирования Delphi. Что же дальше? Вас ждет новая высота — среда программирования Delphi. Сейчас вы имеете лишь поверхностное представление о ее возможностях. Настало время подготовить себя к профессиональной работе в среде Delphi.

Программирование на языке Delphi

Глава 7. Проект приложения

Авторы: А.Н. Вальвачев К.А. Сурков Д.А. Сурков Ю.М. Четырько

Опубликовано: 18.12.2005 Версия текста: 1.0

7.1. Проект

7.1.1. Понятие проекта 7.1.2. Файлы описания форм 7.1.3. Файлы программных модулей 7.1.4. Главный файл проекта 7.1.5. Другие файлы проекта

7.2. Управление проектом

7.2.1. Создание, сохранение и открытие проекта 7.2.2. Окно управления проектом 7.2.3. Группы проектов 7.2.4. Настройка параметров проекта 7.2.5. Компиляция и сборка проекта 7.2.6. Запуск готового приложения

7.3. Форма

7.3.1. Понятие формы 7.3.2. Имя и заголовок формы 7.3.3. Стиль формы 7.3.4. Размеры и местоположение формы на экране 7.3.5. Цвет рабочей области формы 7.3.6. Рамка формы 7.3.7. Значок формы 7.3.8. Невидимая форма 7.3.9. Прозрачная форма 7.3.10. Полупрозрачная форма 7.3.11. Недоступная форма 7.3.12. События формы

7.4. Несколько форм в приложении

7.4.1. Добавление новой формы в проект 7.4.2. Добавление новой формы из Хранилища Объектов 7.4.3. Переключение между формами во время проектирования 7.4.4. Выбор главной формы приложения 7.4.5. Вызов формы из программы

7.5. Компоненты

7.5.1. Понятие компонента 7.5.2. Визуальные и невизуальные компоненты 7.5.3. «Оконные» и «графические» компоненты 7.5.4. Общие свойства визуальных компонентов 7.5.5. Общие события визуальных компонентов

7.6. Управление компонентами при проектировании

7.6.1. Помещение компонентов на форму и их удаление 7.6.2. Выделение компонентов на форме 7.6.3. Перемещение и изменение размеров компонента 7.6.4. Выравнивание компонентов на форме 7.6.5. Использование Буфера обмена

7.7. Закулисные объекты приложения

7.7.1. Application — главный объект, управляющий приложением 7.7.2. Screen — объект, управляющий экраном 7.7.3. Mouse — объект, представляющий мышь 7.7.4. Printer — объект, управляющий принтером 7.7.5. Clipboard — объект, управляющий Буфером обмена

7.8. Итоги

Решаемая на компьютере задача реализуется в виде прикладной программы, которую для краткости называют приложением. В основе разработки приложения в среде Delphi лежит проект. Центральной частью проекта является форма, на которую помещаются необходимые для решения конкретной задачи компоненты. В такой последовательности — проект - формы - компоненты — мы и рассмотрим процесс создания приложения в среде Delphi. По ходу изложения материала мы будем часто обращаться к примеру с вычислением идеального веса, который был рассмотрен в первой главе. Если вы его забыли, перечитайте первую главу еще раз.