Ресурсы

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

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

Ресурсы

Сообщение grigoreo » 19.06.2009 17:58:27

подскажите как удобнее и проще запихать ресурсы в бинарник(изображения,иконки,возможно звуки),чтобы потом подгружать к динамически созданым компонентам ?
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: Ресурсы

Сообщение Vadim » 19.06.2009 19:25:46

grigoreo
Проще всего запихать примерно таким образом:
Код: Выделить всё
{$R файл_ресурса.rc}

Файл ресурса откомпилируется автоматически.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Ресурсы

Сообщение grigoreo » 19.06.2009 20:04:03

Vadim писал(а):grigoreo
Проще всего запихать примерно таким образом:
Код: Выделить всё
{$R файл_ресурса.rc}

Файл ресурса откомпилируется автоматически.


Хорошо Vadim а можете еще дать подсказочку каким кодом потом подгрузить в TBitmap к примеру мой ресурс подключеный таким образом,

а какой вариант еще есть?(ведь если не ошибаюсь данный способ будет работать только в Windows)
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: Ресурсы

Сообщение Vadim » 20.06.2009 06:43:25

grigoreo
Код: Выделить всё
Bitmap.Handle := LoadBitmap(hInstance, PChar(Идентификатор_картинки_в_ресурсе));

Как это будет выглядеть в Linux - не знаю, т.к. ресурсами в Linux никогда не интересовался.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Ресурсы

Сообщение Павел Ишенин » 20.06.2009 12:03:47

Код: Выделить всё
Bitmap.LoadFromResourceName('...')
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Ресурсы

Сообщение grigoreo » 20.06.2009 21:02:40

Vadim писал(а):grigoreo
Проще всего запихать примерно таким образом:
Код: Выделить всё
{$R файл_ресурса.rc}

Файл ресурса откомпилируется автоматически.


А можно еще уточнить в какую часть кода вставить эту дериктиву
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: Ресурсы

Сообщение Mr.Smart » 20.06.2009 21:03:59

Без разницы. А вообще обычно вставляют после implementation :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Ресурсы

Сообщение grigoreo » 21.06.2009 09:01:50

Хорошо с Windows все понятно а под линуксом как хранить ресурсы? или остается по возможности распихивать их в компоненты изображения в тот же TImage , или отдельными файлами деражть(т.к rc файлы я так понимаю в линуксе не функционируют и не компилятся это чисто Windows момент)

Фанаты Линукса подскажите как ресурсы в исполняемом бинарнике хранить?
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

Re: Ресурсы

Сообщение NXP » 21.06.2009 09:57:23

grigoreo писал(а):а под линуксом как хранить ресурсы?

Ресурс - это фич WinAPI, и я бы не сказал, что хороший, особенно если ресурсов много и они жирные.
Включай картинки, иконки и тд. в компоненты, либо храни во внешних файлах.
Это разумно и полезно для ОЗУ :D
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Re: Ресурсы

Сообщение Sergei I. Gorelkin » 21.06.2009 13:56:24

Да все там нормально с ОЗУ. Секция ресурсов отображается в адресное пространство ровно так же, как и секция кода, и ни байта ОЗУ не занимает, если не считать всяких системных кэшей. Одинаково в винде и в линуксе.

grigoreo
В Линуксе действительно не принято упаковывать ресурсы в исполняемый файл, их хранят отдельно. Поддержка ресурсов в FPC/Linux - это исключение из правил, впрочем, достаточно приятное.
Но проблема состоит только в том, чтобы скомпилировать .rc в .res. Можно заменить {$r file.rc} на {$r file.res} и собирать .res вручную, с помощью виндового компилятора под wine, например. Благо ресурсы - вещь более-менее статическая и их не нужно пересобирать каждый раз вместе с кодом.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Ресурсы

Сообщение Павел Ишенин » 22.06.2009 03:12:34

Насколько мне известно windres есть и под linux и под osx.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Ресурсы

Сообщение Attid » 22.06.2009 12:57:29

но только для 32 разрядных систем, для 64 я пока не видел =(
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Ресурсы

Сообщение Sergei I. Gorelkin » 22.06.2009 14:16:04

Windres делает 2 преобразования: .rc -> .res и .res -> .o
Формат .res одинаковый для 32 и 64 бит, а второе преобразование делается с помощью fpcres из комплекта поставки, который с 64 бит вроде как дружит. Так что можно обойтись 32-битным windres.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 50

Рейтинг@Mail.ru
cron