
- •Лекция № 1. Интегральная среда Delphi. Окна Delphi.
- •1. Среда Delphi. Главное окно.
- •2. Окно Инспектора объектов, Конструктора формы и Редактора кода.
- •Лекция № 2. Характеристика проекта. Компиляция и выполнение проекта.
- •1. Характеристика проекта Delphi.
- •2.Компиляция и выполнение проекта
- •Лекция № 3. Библиотека компонентов (vcl). Понятие класса и объекта.
- •1. Организация библиотеки компонентов
- •2. Понятие класса. Элементы класса.
- •Свойства
- •События
- •Лекция № 4. Общие свойства визуальных компонентов. События, методы. Обращение к объектам.
- •1. Основные общие свойства компонентов.
- •2. Основные общие методы компонентов.
- •3.Обращение к объектам.
- •Основные события.
- •Лекция № 5. Визуальные компоненты для отображения текстовой информации. Основные свойства компонентов.
- •Отображение текста
- •Лекция № 6. Визуальные компоненты для редактирования многострочных данных. Основные свойства компонентов.
- •1. Многострочный редактор
- •2.Общие элементы компонентов редактирования
- •Лекция № 7. Визуальные компоненты: работа со списками: простой, комбинированный. Основные свойства компонентов.
- •1.Работа со списками.
- •2.Комбинированный список
- •3.Общая характеристика списков
- •4.Другие характеристики списков
- •Лекция № 8. Компоненты-кнопки. Переключатели. Основные свойства компонентов.
- •Виды кнопок, используемые компоненты и их свойства.
- •2. Виды переключателей, используемые компоненты и их свойства.
- •Лекция № 9. Визуальные компоненты-контейнеры. Компоненты-закладки. Основные свойства компонентов.
- •1. Основные компоненты, используемые для объединения других компонентов.
- •Лекция № 10. Компоненты для редактирования данных в табличной форме.
- •Лекция № 11. Визуальные компоненты для изменения числового значения в заданном диапазоне. Визуальные компоненты для выбора дат. Основные свойства компонентов.
- •Визуальные компоненты для изменения числового значения в заданном диапазоне.
- •2.Визуальные компоненты для выбора дат.
- •Лекции № 12-13. Форма как Delphi-компонент. Жизненный цикл формы. Отображение формы. Управление доступом к форме. Особенности визуального проектирования форм.
- •1.Форма
- •2.Характеристики формы. Свойства
- •3.Характеристики формы. Методы.
- •4.Характеристики формы. События
- •5.Взаимодействие форм.
- •6.Шаблоны форм.
- •Лекции № 14-15. Главное и контекстное меню. Пункты меню, их свойства. Конструктор меню, настройка меню. Комбинации клавиш.
- •1.Главное и контекстное меню.
- •2.Пункты меню, их свойства, события.
- •3.Конструктор меню, настройка меню. Комбинации клавиш.
- •Лекция № 16. Использование диалоговых компонентов.
- •Лекция № 17. Компоненты-индикаторы. Компоненты для отображения геометрических фигур.
- •Компоненты-индикаторы.
- •Компоненты для отображения геометрических фигур.
- •Лекция № 18. Вывод сложной графической информации.
- •Лекция № 19. Создание элементов справочной системы. Создание строки состояния. Создание подсказок.
- •1. StatusBar (Строка состояния).
- •2. Использование в Delphi подсказок
- •Лекция № 20. Создание заставки, информационных окон.
- •1. Создание заставки.
- •Лекция № 21. Понятие и назначение dll-библиотек. Создание dll-библиотек. Использование dll-библиотек.
- •Создание dll-библиотек.
- •Использование dll-библиотек.
- •Лекция № 22. Понятие исключительной ситуации. Обработка исключений.
- •1. Понятие исключительной ситуации.
- •Обработка исключений.
- •Список использованных источников
- •Содержание
Использование dll-библиотек.
Для того чтобы в прикладной программе воспользоваться процедурами и функциями библиотеки, необходимо выполнить так называемый импорт. Импорт обеспечивает загрузку библиотеки в оперативную память и привязку записанных в программе команд вызова к адресам соответствующих процедур и функций библиотеки.
Существуют два способа импорта, отличающихся по удобству и гибкости программирования:
статический импорт (обеспечивается директивой компилятора external);
динамический импорт (обеспечивается функциями LoadLibrary и GetProcAddress).
Статический импорт является более удобным, а динамический — более гибким.
При статическом импорте все действия по загрузке и подключению библиотеки выполняются автоматически операционной системой во время запуска главной программы. Чтобы задействовать статический импорт, достаточно просто объявить в программе процедуры и функции библиотеки как внешние. Это делается с помощью директивы external, например:
procedure BubleSortIntegers(var Arr: array of Integer); stdcall; external 'SortLib.dll'; procedure QuickSortIntegers(var Arr: array of Integer); stdcall; external 'SortLib.dll'; |
После ключевого слова external записывается имя двоичного файла библиотеки в виде константной строки или константного строкового выражения. Вместе с директивой external может использоваться уже известная вам директива name, которая служит для явного указания экспортного имени процедуры в библиотеке. С ее помощью объявления процедур можно переписать по-другому:
procedure BubleSort(var Arr: array of Integer); stdcall; external 'SortLib.dll' name 'BubleSortIntegers';
procedure QuickSort(var Arr: array of Integer); stdcall; external 'SortLib.dll' name 'QuickSortIntegers'; |
Поместив в программу приведенные выше объявления, можно вызывать процедуры BubleSort и QuickSort, как будто они являются частью самой программы.
Этот способ называется статическим импортом.
Расширение файла, содержащего DLL, может не указываться - по умолчанию подразумеваются файлы *.DLL и *.EXE. Если файл имеет другое расширение (например, как COMPLIB.DCL в Delphi), или если требуется динамическое определение DLL и импортируемых функций (например, Ваша программа работает с различными графическими форматами, и для каждого из них существует отдельная DLL.), то для решения такого рода проблем можно обратиться напрямую к API Windows, используя, так называемый, динамический импорт:
uses
WinTypes, WinProcs, ... ;
type
TMyProc = procedure ;
var
Handle : THandle;
MyImportProc : TMyProc;
begin
Handle:=LoadLibrary('MYDLL');
if Handle>=32 then { if <=32 - error ! }
begin
@MyImportProc:=GetProcAddress(Handle,'MYEXPORTPROC');
if MyImportProc<>nil then
...... {using imported procedure}
end;
FreeLibrary(Handle);
end;
Лекция № 22. Понятие исключительной ситуации. Обработка исключений.