Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по JPEG из DLL


kas86 ©   (2007-10-28 11:57:00) 

Вот например Bitmap file выташить из dll можно вот так
var
 AModule: THandle;
begin
 AModule := LoadLibrary('graphics.dll');
 image1.Picture.BitMap.LoadFromResourceName(AModule, 'police');
 FreeLibrary(AModule);

Вопрос: А КАК ВЫТАЩИТЬ из тойже dll JPEG картинку??????


MetalFan   (2007-10-30 13:39:00) [1]


> Ура разобрался самостоятельно!

так тебе же сказали в [1]


kas86   (2007-10-28 17:54:00) [2]

ЕЩЁ ОДИН МОМЕНТ

Если в файле graphics.rc мы пишем kartinka JPGkartinka.jpg то и вдальнейшем
когда пишем программный код надо писать

RS:=TResourceStream.Create(AModule, 'kartinka', 'JPG'); а не JPEG, но у меня и так всё работало, главное чтоб в USES было прописано JPEG


antonn   (2007-10-28 17:16:00) [3]

ага, как раз в битмап jpg грузить...


Dimaxx   (2007-10-28 17:04:00) [4]

Насколько я представляю, должно быть так:

Image1.Picture.Bitmap.Assign(JPG.Bitmap);


homm   (2007-10-28 16:22:00) [5]

> Image1.Picture:=nil;
> Image1.Picture.Assign(JPG);

Ты уверен, что ЭТО работает?


kas86   (2007-10-28 16:19:00) [6]

Ура разобрался самостоятельно! Перелопатив кучу форумов и исходников, на которых ничего не работает, втретил такую же кучу людей с такой же проблемой. Так вот :   КАК СОЗДАТЬ DLL-БИБЛИОТЕКУ И ИЗВЛЕЧЬ ИЗ НЕЁ JPEG НЕ РАСПАКОВЫВЫЯ НА ДИСК. (админ, можете добавить в faq)

1. Создаём файл graphics.rc
2. Пишем туда kartinka JPG kartinka.jpg (jpg и rc файлы в одном каталоге)
3. запускаем borland\delphi7\bin\brcc32.exe с параметром graphics.rc
4. Получив graphics.res в делфи создаем DLL Wizard
5. Дописываем после USES, строчку {$R graphics.res} и компилируем.
6. Получив graphics.dll кладем его в папку с разрабатываемой программой и пишем код куда вам надо:

var
RS: TResourceStream;
JPG: TJPEGImage;
AModule: THandle;
begin
AModule:=LoadLibrary('graphics.dll');
RS:=TResourceStream.Create(AModule, 'kartinka', 'JPEG');
JPG:=TJPEGImage.Create;
JPG.LoadFromStream(RS);
Image1.Picture:=nil;
Image1.Picture.Assign(JPG);
JPG.Free;
RS.Free;

Остаётся только расставить как вам надо try except. С битмапами проще - код расписан выше. Теоретически можно в длл зашить и мета файлы и т.д.
Спасибо MBo за то что указал на правильный путь.


kas86   (2007-10-28 12:50:00) [7]

Хорошо, теоретически выглядить должно вроде как так?????

JPG: TJEPEGImage;
RS: TSesourceStream;

begin
JPG:=JPG.Create;
RS:=TResourceStream.Create(hInstance, PChar(copy('graphics.dll', 1, Pos('.', 'graphics.dll')-1)), 'poljpg'); -- вот тута у меня проблема, не могу додумать программа выдает Reource graphics not found
JpG.LoadFromStreaam(RS);
Image.Picture.Assign.(JPG);

где poljpg - сама картинка Жпег вшитая в длл

Помогите дописать правильно


MBo   (2007-10-28 12:02:00) [8]

TJpegImage.LoadFromStreaam + TResourceStream


Наверх

Титульная страница Поиск, карта сайта Написать письмо