dll и картинки как связать их и обрабатывать

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

dll и картинки как связать их и обрабатывать

Сообщение BamsikPotapov » 30.03.2012 12:57:04

Хочу чтобы картинки можно было выложить в dll файл и потом обращаться к нему и из программы. Можно ли такое сделть и как не знаю. Держать рядом со своей программой кучу картинок не очень хочется. Конечно есть imagelist, но у меня есть еще и другие цели, хочу немного поменять вид системных значков, папок, а они в dll файлах вот и решил попробовать.
Хочу хорошего совета, чтобы сразу копать в более менее правильном направлении.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: dll и картинки как связать их и обрабатывать

Сообщение B4rr4cuda » 30.03.2012 13:26:54

Посмотрите в сторону ресурсов и их загрузки..
Дельфевый пример тут
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: dll и картинки как связать их и обрабатывать

Сообщение BamsikPotapov » 30.03.2012 20:06:43

Ссылка не помогла, но я нашел как использовать dll, а как туды засунуть картинки ваще не понимаю.

Добавлено спустя 3 минуты 58 секунд:
Код библиотеки
Код: Выделить всё
library bams;
{$mode objfpc}{$H+}
uses
  Classes;
{$R *.res}
function summ(a,b:integer):integer; export;
begin
  summ:=a+b;
end;

exports summ;

begin
end.

скомпилировал и получил bams.dll
далее в основной программе перед описанием переменных(Var) добавил такое
Код: Выделить всё
function mySumma(z1,z2:integer):integer;external 'bams' name 'summ';

функция работает, а как всё-таки в dll картинки закинуть??????????????????????????????????????
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: dll и картинки как связать их и обрабатывать

Сообщение Maxizar » 31.03.2012 22:25:14

1 - зачем Вы так делаете? ИМХО - это неправильно. Неправильно держать иконочки и всякое такое в ДЛЛ - ЗАЧЕМ. Для этого есть архивы да блин все что угодно но ДЛЛ.... Хотя если это общий ресурс и смысл в этом, то ладно.....

Теперь МатЧасть:

1. Ресурсы нужно создавать САМИМ. Для этого в поставку FPC включена программа windres.exe (c:\lazarus\fpc\2.4.2\bin\i386-win32\) <-- у меня в этой папке.
2. Этой программе нужно передать файл *.rc из которого она создаст ресурс, который вы можете использовать в своей ДЛЛ.
3. Как создать файл *.rc - это тупо текстовый файл, открываем блокнот и пишем, в моем примере следующее:

Код: Выделить всё
2 BITMAP   "C:/1.bmp"


Где:
    2 - это ID ресурса по нему можно будет обращаться к ресурсу.
    BITMAP - тип ресурса, типы бывают разные (гугл в помощь)
    "C:/1.bmp" - путь до файла (полный) либо относительно директории windres

Ид ресурса должен быть уникальным, так же не рекомендуется брать 1-ый ид, он вроде как зарезервирован, хотя возможно это и не так...

Моя компиляция ресурса была таким вот:
Код: Выделить всё
C:\lazarus\fpc\2.4.2\bin\i386-win32>windres.exe -i C:\s.rc -o C:\simple.res


После этого добавляем сгенеренный файл ресурсов в список до *.res и компилим либу, потом эту либу юзаем... пример в архиве...
Чтобы не использовать ИД, а имя ресурса есть функция LoadFromResourceName

Ну вроде все, смотрим исходники...(пример как ДЛЛ, так и приложения, которое открывает картинку из длл, как ресурс) ну и гугл в помощь,
PS. 1. есть программы для генерации и составления как файлов res так и rc файлов...
2. Если честно сам никогда не использовал ресурсы, тем более в ДЛЛ :mrgreen:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 235

Рейтинг@Mail.ru