|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ресурсы внутри .ЕХЕ
Помогите мне пожалуйста, кто может !
Как поместить какой-нибудь ресурс (например .bmp) внутрь своего ЕХЕ и считать его потом оттуда ? Когда я добавляю такую строчку {$R image.bmp} то при запуске проги появляется сообщение с ошибкой. Format C: - чистит то, что другим не подсилу |
#2
|
||||
|
||||
смотри внутри - я всё сделал..
тока прочти readme да кстати все ресурсы можно так пихать... просто ты не сказал конкретно.. ведь можно, если знать какой тип ресурса(bmp, cur или что ещё) запихнуть его так, что бы потом удобнее было пользоваться.. извини говорю абстрактно - но на это есть теория, советую.. Нет повести печальнее на свете, чем повесть о заклиневшем Resete. Последний раз редактировалось Ferra, 08.12.2006 в 18:29. |
#3
|
||||
|
||||
Пользоваться (это если ресурс был в длл)
Код:
procedure ExtractIcon(FName: String); var stream: TResourceStream; begin stream := TResourceStream.Create(LoadLibrary(pchar(Fname)), 'CD_Rom', 'Icons'); with TFileStream.Create('test.png', fmCreate) do begin CopyFrom(stream, stream.Size); Free; end; end; Если в себе Код:
procedure ExtractIcon; var stream: TResourceStream; begin stream := TResourceStream.Create(hInstance, 'CD_Rom', 'Icons'); with TFileStream.Create('test.png', fmCreate) do begin CopyFrom(stream, stream.Size); Free; end; end; Нет повести печальнее на свете, чем повесть о заклиневшем Resete. Последний раз редактировалось Ferra, 08.12.2006 в 18:35. |
#4
|
|||
|
|||
А можно вот так...
Создаешь в текстовом редакторе файл "xxxxxxxxx.rc"
в нем пишешь, например: shareware INCFILE shareware.pas название файла - твое, если файл ресурса сидит далеко не в корне этого каталога - укажи путь к нему потом скомпили свой RC файл программой brcc32.exe и подключи получившийся файл xxxxxxxxxxx.res к нужному модулю командой {$R xxxxxxxxxxx.res} procedure ExtractRes(ResType, ResName, ResNewName : String); var Res : TResourceStream; begin Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType)); Res.SavetoFile(ResNewName); Res.Free; end; Для извлечения (пишешь в обработчике) ExtractRes('INCFILE', 'shareware', 'shareware.pas'); Вот собственно и все - запихали в файл все, что надо, а потом вынимаем по необходимости. З.Ы. Таким образом в один exe можно напихать туеву хучу других, а потом вынимать и запускать....... |
#5
|
||||
|
||||
|
#6
|
|||
|
|||
Спасибо всем, вроде всё работает !
З.Ы. Decoding, Хороший сайт Format C: - чистит то, что другим не подсилу |