|
Вопрос # 2 061/ вопрос открыт / |
|
Приветствую, уважаемые эксперты! У меня есть несколько картинок. В программе к ним есть путь. Но мне надо чтобы пользователь не смог их изменять. Можно ли эти картинки поместить в dll. Если можно, то как их поместить, и как их потом использовать в программе.
 |
Вопрос задал: Денис (статус: Посетитель)
Вопрос отправлен: 7 ноября 2008, 20:17
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Ученый
Здравствуйте, Денис! Не знаю как в dll, но могу вам предложить другой вариант вариант. На этом сайте есть исходник программы, показывающей, как упаковать разные данные в exe-файл программы (курсоры, звуки, изображения, тексты). Зарузить ее можно здесь: https://www.delphi-int.ru/download/file/334/ Так же вы можете посмотреть Вопрос № 1988, там правдо не о картинках, но есть многое, что вом будет полезным!
Удачи!!!
 |
Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 7 ноября 2008, 22:05
|
Ответ #2. Отвечает эксперт: Feniks
Здравствуйте, Денис!
Данная тема уже много кратно подымалась. Поищите поиском на сайте по ключевым словам. Найдете много примеров. Или же берите пример, который указал Ученый и переделывайте его. Для этого вам сначало надо создать проект DLL. В нем подключаете файл ресурса test.res, как указано в примере. Компилируете и билдите проект. В результате получаете свою DLL со своими ресурсами. В примере есть функции для вытаскивания картинок из ресурса - LoadBitmap или LoadFromResourceName, смотря что вам надо и что вы хотите. У них первым параметром указывается THandle модуля в котором искать эти ресурсы. Если указать Handle или HInstance, то в качестве модуля берется ваша программа, т.е. обращения идут самой к себе. Если вам надо взять ресурсы из DLL, то надо указать Handle вашей библиотеки. А для этого сначало надо ее открыть:
var
MyDll : THandle;
bmp : TBitMap;
begin
MyDll := LoadLibrary(PChar('имя dll файла'));
if MyDll <> 0 then
begin
bmp := TBitMap.Create; {Создаем объект TBitMap}
bmp.LoadFromResourceName(MyDLL, 'имя ресурса картинки');
// теперь в bmp находится наша картинка
end;
FreeLibrary(MyDLL);
// не забудьте потом, когда объект bmp не нужен будет, указать bmp.free; иначе будет утечка памяти.
end;
P.S. Желаю удачи.
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 14 ноября 2008, 10:58
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 10 ноября 2008, 20:50; участников в обсуждении: 1.
|
Ученый (статус: 8-ой класс), 10 ноября 2008, 20:50 [#1]:
Але народ! вы если задали вопрос, так хотябы отпишитесь!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|