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

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 1
Всего онлайн: 1
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
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
хммм, интересненький способ