Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?
Поиск
L


Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 5
Всего онлайн: 5
Зарегистрировано юзеров: 5762
Комментариев на сайте: 623
Новый юзер: Sevnday



Последние комментарии
c
N0E0O7 прокомментировал "Урок 1 - Инициализация OpenGL":
А у меня форма чёрная запускается
dimonsky прокомментировал "Урок 2 - Простые примитивы":
GetDC(handle) вместо canvas.handle, и убрать вызов FormResize. Тогда получается конфетка.



Мы в соцсетях
c
Delphi
Урок 29 - Работа с DLL

   В этом уроке мы ознакомимся с динамическими библиотеками Windows. Научимся её использовать и создавать.

   Файл динамической библиотеки Windows имеет расширение .dll, вы наверняка сталкивались с такими файлами. Библиотеки имеют ряд плюсов в сравнении с обычным .exe файлом:

  1. Экономия системной памяти
  2. Можно хранить картинки, файлы и тд.
  3. Быстрое обновление программы


   Например наша программа работает и использует определённый алгоритм действий, этот алгоритм записан в 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 выводится результат:

Результат


Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 25 Апреля 2013
Просмотров:

Урок 28 - Создаем игру Ping-Pong - часть(3/3) Урок 30 - Знакомство с базами данных

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавила: Needle [Новичок] Дата: 2014-02-14
ой хороооош! спасииибочки!




аватар Добавил(а): Kopeheb [Новичок] Дата: 2015-01-31
но хотелось бы(я еще не все уроки просмотрел) найти как мне записать в dll формулу(ы), которые: одна: суммирует SUM(от Edit1 до Edit31) вторая: (результат_SUM+Edit32-Edit33-Edit34) / (либо ComboBox2(с двумя значениями) Edit35 * 100 кароч, замыслило программку написать которая считает: и желательно куда то записывает результаты в(.xls) с сохранением предыдущих записей. Конечно же, наверняка, такое лучше реализовать с таблицами, но пока понятного примера не нашел. и еще вопросы: созданная по уроку dll, после редакции нужно компилировать в новую dll или можно в эту же?




аватар Добавил(а): Kopeheb [Новичок] Дата: 2015-01-31
редакция строчки (либо ComboBox2(с двумя значениями) ЛИБО Edit35 * 100




аватар Добавил(а): nur7 [Новичок] Дата: 2015-09-08
Undeclared stream!




аватар Добавил: sashf1999 [Новичок] Дата: 2016-04-23
хммм, интересненький способ