Форум: "Основная";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];
ВнизКак при компиляции автоматически поместить исходный код Найти похожие ветки
← →
apic (2010-03-01 16:33) [0]Как при компиляции автоматически поместить исходный код (pas, dpr файлы) в исполняемый файл в виде ресурса(ов).
← →
12 © (2010-03-01 16:43) [1]батником?
← →
Юрий Зотов © (2010-03-01 16:46) [2]Сам не пробовал, но по идее должно сработать: создаем RC-файл, в нем указываем нужные файлы исходников и подключаем его директивой $R.
← →
Сергей М. © (2010-03-01 16:50) [3]Если набор юнитов (количество и их имена) в составе проекта неизменно, то достаточно добавить в проект rc-файл с описанием списка включаемых в ресурсы файлов.
Тип ресурса - например, RT_RCDATA
← →
apic (2010-03-01 17:13) [4]создаю rc файл следующего содержания:
Unit1 RCDATA "Unit1.pas"
Unit2 RCDATA "Unit2.pas"
Unit3 RCDATA "Unit3.pas"
прикручиваю его директивой {$R source.rc}
Выдает ошибку:
[Error] RLINK32: Unsupported 16bit resource in file "source.rc"
← →
apic (2010-03-01 17:14) [5]файл source.rc в одной папке с файлами проекта
← →
Вася (2010-03-01 17:27) [6]попробуй так:
{$R "source.res" "source.rc"}
← →
Игорь Шевченко © (2010-03-01 17:29) [7]
> прикручиваю его директивой {$R source.rc}
{$R source.res}
brcc32 source.rc
← →
Сергей М. © (2010-03-01 20:58) [8]
> прикручиваю его директивой {$R source.res}
А это самый source.res появляется в результате компиляции проекта, к которому подключен source.rc
← →
apic (2010-03-02 06:53) [9]как подключить этот source.rc. Стыдно сказать, но я даже так попробовал: {$R "source.res" "source.rc"}, не помогает. А на счет того, что res можно приделать, так это я знаю, вопрос как сделать, что бы он автоматически сам создавался, а не предварительно его компилировать brcc32.
← →
Leonid Troyanovsky © (2010-03-02 07:34) [10]
> apic (02.03.10 06:53) [9]
> как подключить этот source.rc
Shift+F11
--
Regards, LVT.
← →
apic (2010-03-02 07:51) [11]Спасибо Leonid Troyanovsky !!!!!!!!!!!!!!!!!!!!!!!!!! Подключил! Оказывается {$R "source.res" "source.rc"} работает только писать нужно сразу после program Project1; Но лучше конечно Shift+F11
← →
Leonid Troyanovsky © (2010-03-02 07:56) [12]
> apic (02.03.10 06:53) [9]
> так попробовал: {$R "source.res" "source.rc"}, не помогает
Можно и так, но, чтобы оно работало,
вставить надо в dpr до раздела uses.
--
Regards, LVT.
← →
apic (2010-03-02 12:39) [13]Теперь вопрос, как это все дело выгрузить в файл(ы). Пытаюсь процедурой:
procedure(ResType, ResName, ResSaveName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResSaveName);
Res.Free;
end;
ВызываюExtractRes("RCDATA", "Unit1", "c:\unit.pas");
Говорит, что ресурс с таким именем не найден.
← →
apic (2010-03-02 12:50) [14]Теперь вопрос, как это все дело выгрузить в файл(ы). Пытаюсь процедурой:
procedure ExtractRes(ResType, ResName, ResSaveName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResSaveName);
Res.Free;
end;
Вызываю("RCDATA", "Unit1", "c:\unit.pas");
Говорит, что ресурс с таким именем не найден.
← →
apic (2010-03-02 15:58) [15]Все работает если указываю не стандартный тип ресурса:
Unit1 PASFILE "Unit1.pas"
Unit2 PASFILE "Unit2.pas"
Unit3 PASFILE "Unit3.pas"
И все хорошо извлекается:
ExtractRes("PASFILE" , "Unit1.pas", "c:\Unit1.pas");
Кто нибудь может объяснить, что здесь происходит? RCDATA особый тип что-ли? Кстати в редакторе ресурсов тоже интересно все выглядит...
← →
Leonid Troyanovsky © (2010-03-02 17:59) [16]
> apic (02.03.10 12:50) [14]
> Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res := TResourceStream.Create(Hinstance, "Unit1" , RT_RCDATA);
RT_RCDATA - константа, определяющая, что это ресурс типа RCDATA.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2010-03-02 18:47) [17]
> apic (02.03.10 12:50) [14]
> Теперь вопрос, как это все дело выгрузить в файл(ы).
А каков смысл оных маневров?
--
Regards, LVT.
← →
Германн © (2010-03-03 02:26) [18]
> А каков смысл оных маневров?
Мне тоже интересно.
← →
apic (2010-03-03 06:51) [19]Насчет маневров - исходники все время теряю, хочу чтобы с ехе-шником всегда были и чтобы без редактора ресурсов можно было извлечь. А на счет Res := TResourceStream.Create(Hinstance, "Unit1" , RT_RCDATA); думаю так и должно быть - щас проверю...
← →
apic (2010-03-03 06:57) [20]Да
TResourceStream.Create(Hinstance, "Unit1" , RT_RCDATA);
работает! Спасибо!
← →
Anatoly Podgoretsky © (2010-03-03 08:43) [21]> Leonid Troyanovsky (02.03.2010 18:47:17) [17]
Все свое ношу с собой.
← →
KSergey © (2010-03-03 10:57) [22]> apic (03.03.10 06:51) [19]
> Насчет маневров - исходники все время теряю, хочу чтобы
> с ехе-шником всегда были
Завести репозиторий где-либо на бесплатном сервере исходников (том же гугле) + получить версионность и багтрекинг - это, конечно, не наш путь
Мы свой велик изобретть будем.
Только стоя, только в гамаке.
← →
DVM © (2010-03-03 12:21) [23]
> apic (03.03.10 06:51) [19]
> Насчет маневров - исходники все время теряю
Давай и Delphi туда. А то вдруг потеряешь :) И Windows.
← →
apic (2010-03-04 16:34) [24]Каждый программист должен изобретать свой велосипед! Иначе нет смысла быть программистом, ведь на все случаи жизни уже давно написаны программы и в сети сервера на любой вкус есть, а умение работать с ресурсами исполняемого файла никогда не будут лишними. Я считаю, что суть программиста в том, что бы решать любые поставленные задачи, даже если это нафик не нужно, по крайней мере в качестве общего развития. Да и вообще прикрепить исходник исполняемому файлу быстрее чем залазить в тырнет, да и доступ к сети не всегда есть (вы не поверите).
← →
KilkennyCat © (2010-03-05 02:37) [25]
> apic (04.03.10 16:34) [24]
Это ты мощно загнул...
не забудь делать копию екзешника.
Только эту копию в ресурс этого же екзешника не вставляй, не надо...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.004 c