Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2014, 05:04   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию Работа с прикомпилированными файлами и ресурсами

Всем привет. Может такая тема уже и была, но яндекс по какой-то причине не дал мне ответа и я решил написать вам.
Как мы знаем, к файлу exe можно прикомпилировать любой файл:
Код:
implepitation 
{$R *.dfm}
{$R 1.txt} //заставляем компилятор прикомпилировать файл к exe
Но вопрос в другом. Вопросы в теме: Правильно ли прикомпилирован? Как его от туда при работе вытащить в TMemoryStream? Можно ли указать с дирикторией(дириктория/1.txt)?
Но это ещё не конец. Дальше дело обстоит с ресурсами. Я знаю как их вытаскивать(c помощью TResourceStream), но можно ли их программно создавать без лишних библиотек? Как примерно распологаются данные в файле .res, иначе как он устроен и из чего состоит?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 14.06.2014, 05:18   #2
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,834
По умолчанию

[саша40 моде он]
Без библиотек нельзя. Чтобы обойтись без kernel32, нужно написать свою ОС.
[/саша40 моде офф]
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 14.06.2014, 05:23   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
[саша40 моде он]
Без библиотек нельзя. Чтобы обойтись без kernel32, нужно написать свою ОС.
[/саша40 моде офф]
Стандартные dll записаны в память при запуске и их используют любые программы. Может я не пояснил, что без лишних, значит без нестандартных, то есть без тех, которые будут вместе с exe.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 14.06.2014, 09:06   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Но вопрос в другом. Вопросы в теме: Правильно ли прикомпилирован? Как его от туда при работе вытащить в TMemoryStream? Можно ли указать с дирикторией(дириктория/1.txt)?
А никак С пом. этой директивы компилятор нормально прикрепит только те рисурсы, которые сам может распознать т.е. это только формы *.dfm и пользовательские ресурсы. Все прочее, типа:
{$R *.txt} будет проигнорировано либо засунуто в хрен знает куда, следовательно потом вы это найти не сможете.

Потому вот это:
Цитата:
Как мы знаем, к файлу exe можно прикомпилировать любой файл:
Код:


Код:
implepitation 
{$R *.dfm}
{$R 1.txt} //заставляем компилятор прикомпилировать файл к exe
Является 100% бредом.

Вам надо делать пользовательский ресурс ввиде *.rc файла, где вы указываете имя ресурса для его определения в коде, тип ресурса, и путь к файлу тапа так:
Код:
TXT_1 RCDATA "C:\LOLWHAT.TXT"
С пом. brcc32 собираете это в res файл за затем лепите к exe:
Код:
{$R mySuperRes.res}
затем с помощью TResourceStream легко находите свой ресурс:
Код:
try
:=TResourceStream.Create(hInstance,PChar('TXT_1'),RT_RCDATA);
//Ресурс есть
except
 //Ресурса нет
end;
Человек_Борща вне форума Ответить с цитированием
Старый 14.06.2014, 09:33   #5
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

я читал про rc, но автоматизовать процесс сборки не как нельзя ли? Просто файлы могут вообще быть любого формата и расширения, а rc поддерживает не все.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 14.06.2014, 09:41   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
rc поддерживает не все.
поддерживает все, формат не важен.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.06.2014, 09:48   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
поддерживает все, формат не важен.
Вот что он поддерживает:

RT_ACCELERATOR Accelerator table
RT_ANICURSOR Animated cursor
RT_ANIICON Animated icon
RT_BITMAP Bitmap resource
RT_CURSOR Hardware-dependent cursor resource
RT_DIALOG Dialog box
RT_FONT Font resource
RT_FONTDIR Font directory resource
RT_GROUP_CURSOR Hardware-independent cursor resource
RT_GROUP_ICON Hardware-independent icon resource
RT_ICON Hardware-dependent icon resource
RT_MENU Menu resource
RT_MESSAGETABLE Message-table entry
RT_RCDATA Application-defined resource (raw data)
RT_STRING String-table entry
RT_VERSION Version resource

А я сказал, что он может быть любой! И тем более не один.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.

Последний раз редактировалось Stilet; 14.06.2014 в 10:04.
саша40 вне форума Ответить с цитированием
Старый 14.06.2014, 09:53   #8
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

RT_RCDATA Application-defined resource (raw data) - ЛЮБОЙ ресурс.
XE5 вне форума Ответить с цитированием
Старый 14.06.2014, 09:54   #9
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
RT_RCDATA Application-defined resource (raw data) - ЛЮБОЙ ресурс.
хм... А может ли в одном res быть несколько файлов подряд?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 14.06.2014, 10:05   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
может ли в одном res быть несколько файлов подряд?
Да. Сколько надо столько и вставляй. Хоть гигабайты.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ресурсами... Ryabinin313 Общие вопросы .NET 0 27.12.2010 00:18
Работа с ресурсами. &&blad&& Помощь студентам 5 28.08.2010 13:51
Работа с ресурсами anger Помощь студентам 2 02.02.2010 12:20
Работа с ресурсами SanekIrk Общие вопросы Delphi 1 16.01.2009 21:34
Работа с ресурсами. Shouldercannon Общие вопросы Delphi 9 04.03.2008 09:08