Некоторые полезные эксперты
В Internet есть предостаточно мест, где можно найти эксперты для Delphi. Одно из таких мест - польский сервер “Delphi Super Page” (http://delphi.icm.edu.pl/). Там вы найдете множество различных экспертов и полезных компонентов. Например, набор экспертов myexp100, предоставляющий возможность ускорить разработку приложений на Delphi. Его можно загрузить по адресу: http://delphi.icm.edu.pl/ftp/d40free/myexp100.zip. Рассмотрим вкратце эти маленькие “добавки”. Набор содержит эксперт - редактор префиксов для имен компонентов. После того, как он будет установлен в инспекторе объектов, напротив свойства Name появится кнопка с многоточием. Это говорит о том, что можно воспользоваться редактором для изменения свойства Name. С его помощью можно указывать префикс для данного класса компонента. Строго говоря, использование префиксов в названиях компонентов - это правило хорошего тона. В меню Tools теперь появляется новое подменю Prefix list editor, с помощью которого можно изменять и добавлять такие префиксы. Как известно, некоторые компоненты являются контейнерами для других (например, TPanel, TGroupBox, TScrollBox и т. п.). Установленный набор позволит управлять выравниванием дочерних компонентов. Для этого достаточно щелкнуть правой кнопкой мыши и выбрать в контекстном меню пункт Align controls. В Delphi есть мастер создания элементов управления, работающих с данными. Однако в рассматриваемом наборе имеется эксперт, благодаря которому можно создавать компоненты для работы с данными более совершенным способом. С помощью эксперта, вызываемого командой Tools / Shortcut list editor, можно определить свой набор клавиатурных эквивалентов для главного меню Delphi. Кроме всего прочего, после установки набора вы обнаружите, что палитра компонентов Delphi стала многострочной.
Контрольные вопросы
1. Что представляет собой APIOpenTools?
2. Что можно выполнять с помощью APIOpenTools?
3. Как называются дополнения, создаваемые с помощью API Open Tools?
4. В каких редакциях Delphi доступно создание мастера?
5. Где размещен исходный код интерфейсов Open Tools?
6. Какие возможности API Open Tools доступны в редакции Standard?
7. Можно ли использовать в C++Builder расширения, собранные на Delphi?
8. Какие стили экспертов есть в Delphi? Как вызываются эксперты каждого стиля?
9. С какой версии Delphi используется "новый стиль" APIOpenTools?
10. Какие модули составляют интерфейс API Open Tools?
11. Какие основные сервисы предоставляет ToolsAPI?
12. Какие типы экспертов можно создавать? Как регистрируются эксперты каждого типа?
13. Что нужно сделать, чтобы в коде был доступ к интерфейсам ToolsAPI?
14. Какие классы и интерфейсы нужно взять в качестве базовых при создании класса эксперта стандартного стиля?
15. Для чего используются функции GetIDString, GetName, GetState и GetMenuText, а также процедуры Execute, Register и RegisterPackageWizard?
Лекция 14
ТЕМА:Использование и создание DLL.
Литература: 1. Вальвачев А.Н., Сурков К.А., Сурков Д.А., Четырько Ю.М. Программирование на языке Delphi. Глава 5. Динамически загружаемые библиотеки. - http://www.rsdn.ru/ARTICLE/DELPHI/DELPHI_7_05.XML#ECB
2.Кривошеев С.Е. Разработка DLL в среде Borland Delphi. http://www.delphihelp.boom.ru
Если вы создаете не одну программу, а несколько, и в каждой из них пользуетесь общим набором подпрограмм, то код этих подпрограмм включается в каждую вашу программу. В результате достаточно большие общие части кода начинают дублироваться во всех ваших программах, неоправданно «раздувая» их размеры. Поддержка программ затрудняется, ведь если вы исправили ошибку в некоторой подпрограмме, то вам придется перекомпилировать и переслать потребителю целиком все программы, которые ее используют. Решение проблемы состоит в переходе к модульной организации выполняемых файлов, которая реализуется с помощью динамически загружаемых библиотек.
Определение 1.Динамически загружаемая библиотека (от англ. dynamically loadable library) - это библиотека подпрограмм, которая загружается в оперативную память и подключается к использующей программе во время ее работы (а не во время компиляции и сборки).
Файлы динамически загружаемых библиотек в среде Windows обычно имеют расширение .dll (от англ. Dynamic-Link Library). Dll не является запускаемым файлом.
Несколько разных программ могут использовать в работе общую динамически загружаемую библиотеку. При этом операционная система в действительности загружает в оперативную память лишь одну копию библиотеки и обеспечивает совместный доступ к ней со стороны всех программ. Кроме того, такие библиотеки могут динамически загружаться и выгружаться из оперативной памяти по ходу работы программы, освобождая ресурсы системы для других задач.
Одно из важнейших назначений динамически загружаемых библиотек - это взаимодействие подпрограмм, написанных на разных языках программирования. Например, вы можете свободно использовать в среде Delphi динамически загружаемые библиотеки, разработанные в других системах программирования с помощью языков C и C++. Справедливо и обратное утверждение - динамически загружаемые библиотеки, созданные в среде Delphi, можно подключать к программам на других языках программирования.
Обобщив выше изложенное, можно указать следующие области применения библиотек:
· Отдельные библиотеки, содержащие полезные для программистов дополнительные функции. Например, функции для работы со строками, или же сложные библиотеки для преобразования изображений.
· Хранилища ресурсов. В DLL можно хранить не только программы и функции, но и всевозможные ресурсы - иконки, рисунки, строковые массивы, меню, и т.д.
· Библиотеки поддержки. В качестве примера можно привести библиотеки таких известных пакетов, как: DirectX, ICQAPI (API для ICQ), OpenGL и т.д.
· Части программы. Например, в DLL можно хранить окна программы (формы), и т.п.
· Плагины (Plugins). Плагины - дополнения к программе, расширяющие ее возможности.
· Разделяемый ресурс. DLL (Dynamic Link Library) может быть использована сразу несколькими программами или процессами (т.н. sharing - разделяемый ресурс).
Существует два типа динамических библиотек -исполняемые и библиотеки ресурсов. Однако это не означает, что в одном файле не может находиться и код некоторой функции и какие-либо ресурсы. Просто иногда бывает удобно разнести реализацию исполняемых процедур и используемые приложением ресурсы в разные файлы.
Итак, процедуры и функции, содержащиеся в динамической библиотеке, можно разделить на два типа: те, которые могут быть вызваны из других приложений и те, которые используются только внутри самого файла библиотеки. Рассмотрим следующий пример:
Screen.Cursors[myCursor] := LoadCursor(HInstance, MYCURSOR');
LoadCursor - функция Windows API, которая вызывается приложением из динамической библиотеки User 32.dll. Кстати, примером хранимых в динамической библиотеке ресурсов могут являться такие стандартные диалоги Windows, как диалог открытия файла, диалог печати или настройки принтера. Эти диалоги находятся в файле Comctl32.dll. Однако многие прикладные разработчики используют функции вызова форм этих диалогов, совершенно не задумываясь, где хранится их описание.
Дата добавления: 2015-09-07; просмотров: 1194;