| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > как запихнуть ЛЮБОЙ файл в ресурс |
| Автор: DeMoNN 3.1.2009, 00:31 |
| Доброго времени суток. Можно ли как-нибудь впихнуть любой файл в ресурс или прилинкковать его к самой программе так, чтобы с ним можно было работать как с файлом (копировать на диск, а там, собственно, работать, если быть точнее ), и как это сделать? |
| Автор: Borland_Delphi_6 3.1.2009, 00:33 |
| Вроде бы тип RCDATA позволяет любые бинарные данные хранить, разве нет? |
| Автор: DeMoNN 3.1.2009, 00:54 |
| позволять то он позволяет - я о нем только это и нашел. А вот как с ним работать? |
| Автор: AntonN 3.1.2009, 00:59 | ||
| создаешь ресурс с файлом: копируешь в одну папку brcc32.exe, файл для ресурса, создаешь файл 1.rc в котором пишешь FILEEXE MEGARES "file.exe". Запускаешь brcc32.exe 1.rc, в этой же папке создастся файл 1.res. Его прикрепляешь к своей проге. В самой проге для извлечения ресурса делаешь что то типа этого:
|
| Автор: DeMoNN 3.1.2009, 01:04 |
| |
| Автор: AntonN 3.1.2009, 01:11 |
| DeMoNN, о brcc32.exe стоит почитать сначала FILEEXE MEGARES "file.exe" 1 - имя ресурса 2 - нахвание секции 3 - сам файл, который будет загнан в ресурс. По TResourceStream тоже достаточно информации, спрашивай поконкретней |
| Автор: DeMoNN 3.1.2009, 01:22 |
| так я же конкректно спросил: куда попадает file.exe А про TResourceStream сейчас попробую погуглить. |
| Автор: AntonN 3.1.2009, 01:24 |
| DeMoNN, file.exe попадает в файл ресурса, а тот в свою очередь прикрепляется к твоей программе. |
| Автор: DeMoNN 3.1.2009, 01:37 |
| AntonN, я имел в виду не это - это и так понятно А куда он попадает после CopyFrom(stream, stream.size) Погуглил, понял. Нашел очень похожий но чуть более понятный для меня код. Спасибо! |
| Автор: AntonN 3.1.2009, 01:40 |
| в случае с копированием в TFileStream - на диск, в TMemoryStream - в "память". |
| Автор: DeMoNN 3.1.2009, 01:43 |
| Спасибо |
| Автор: JackA 6.8.2011, 22:08 |
| Чайницкий вопрос. Мне нужно в ресурс занести 2 ВМР и 1 WAV. Можно это сделать в одном .rc или для каждого файла делать отдельный .rc ? И правильно ли я понимаю : файл из ресурса воспринимается как обычный файл, но только находящийся в памяти самой программы, а не на носителе, и доступен по имени, как и обычный файл, только только с несколько видоизмененным вызовом ? |
| Автор: Snowy 6.8.2011, 22:44 |
| В один rc файл можно заносить любое количество файлов, не превышающее 2Гб. Файл из ресурсов воспринимается, как набор данных, а не как файл. Что касается обращения, то оно тоже отлично. Но, если использовать TResourceStream, то получаем единообразную работу со стримами, которая сходна с работой с файлами. |
| Автор: JackA 7.8.2011, 10:19 |
| Thanks ! Значит, в *.rc каждый свой включаемый файл описываю одной строкой ? Или через запятую ? |
| Автор: Snowy 7.8.2011, 17:10 |
| Каждый файл отдельной строкой |
| Автор: JackA 27.10.2011, 12:23 | ||
| Нужны 2 кнопки с рисунком типа BitBtn, чтобы картинка грузилась из ресурсов. Скомпилил файл BitBMP.res из rc вида : MYBMPU RCDATA "UP.BMP" MYBMPD RCDATA "DOWN.BMP" ( почему-то один из источников настаивает, что надо именно в верхнем регистре ) Но вот подключать - засада : любой из методов требует Cardinal, где взять этого кардинала - непонятка. BitBtn1.Glyph.LoadFromResourceName (Instance:Cardinal; const ResNam:String), BitBtn1.Glyph.LoadFromResourcelD (Instance:Cardinal; ResID:Integer), В случае со звуком из ресурса было без проблем :
Попытался вместо кардинала подсунуть ему pData - ругается на несовместимость типов. Как быть, подскажите, плииз. |