Урок 29 - Работа с DLL
В этом уроке мы ознакомимся с динамическими библиотеками Windows. Научимся её использовать и создавать.
Файл динамической библиотеки Windows имеет расширение .dll, вы наверняка сталкивались с такими файлами. Библиотеки имеют ряд плюсов в
сравнении с обычным .exe файлом:
- Экономия системной памяти
- Можно хранить картинки, файлы и тд.
- Быстрое обновление программы
Например наша программа работает и использует определённый алгоритм действий, этот алгоритм записан в dll и при обновлении этого алгоритма достаточно заменить библиотеку с этим алгоритмом на новую, а так бы пришлось заново скачивать все программу целиком.
Создается библиотека очень просто, открываем Delphi и выбираем File->New->Other->DLL Wizard и вот у нас появилась область кода, сразу стоит заметить, что нельзя использовать формы и компоненты, только ресурсы, функции и процедуры. Мы будем делать калькулятор, но все действия будут записаны в dll. Итак определимся с видом нашей функции: function calc(a, b, index: integer): integer; a и b это наши числа с которыми необходимо произвести действие, про index я расскажу немножечко позже. Над begin и под {R *.res} напишем нашу функцию:
function calc(a, b, index: integer): integer; begin if index = 0 then //если index = 0 то сложим числа Result:= a + b; if index = 1 then //если index = 1 то вычтем из 1 числа 2 число Result:= a - b; end; exports calc; //Позволим другим программам использовать эту функциюТеперь скомпилируем библиотеку, но для начала нужно где-нибудь сохранить проект и назовём его "dll", сохраняем и компилируем... вылезла ошибка. Это говорит о том, что все готово, мы просто компилируем без параметра, в папке куда мы сохранили появилась библиотека "dll.dll". Все с библиотекой закончили, теперь надо создать сам калькулятор который будет использовать нашу библиотеку. Создаем новый проект и сохраняем в ту же папку где и dll. Создаем вот такую форму:
Добавим элементы для ComboBox1, кликаем на свойство Items и делаем тоже самое:
И сразу после implementation объявляем нашу функцию:
function calc(a, b, index: integer): integer; external 'dll.dll'; //Говорим компилятору что эта функция находится в dll.dllВ событии Button1 OnClick пишем код:
label1.Caption:= IntToStr(calc(StrToInt(Edit1.Text), StrToInt(Edit2.Text), ComboBox1.ItemIndex));Все теперь запускаем программу, вводим числа, выбираем действие и нажимаем на кнопочку, в Label1 выводится результат:
Удачи!
Встретимся в следующем уроке!
Добавил(а): Needle | Дата: 2014-02-14 | |
![]() |
Добавил(а): Kopeheb | Дата: 2015-01-31 | |
![]() ![]() |
Добавил(а): Kopeheb | Дата: 2015-01-31 | |
редакция строчки (либо ComboBox2(с двумя значениями) ЛИБО Edit35 * 100
|
Добавил(а): nur7 | Дата: 2015-09-08 | |
Undeclared stream!
![]() |
Добавил(а): sashf1999 | Дата: 2016-04-23 | |
хммм, интересненький способ
![]() ![]() ![]() |
-
Хотелось бы посмотреть примеры работы с фоормами, базами жанных и обработку исключений в DLL