![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как при компиляции автоматически поместить исходный код [D7, WinXP]
apic © (2010-03-01 16:33:00)Как при компиляции автоматически поместить исходный код (pas, dpr файлы) в исполняемый файл в виде ресурса(ов).
KilkennyCat (2010-03-05 02:37:00) [1]
> apic (04.03.10 16:34) [24]
Это ты мощно загнул...
не забудь делать копию екзешника.
Только эту копию в ресурс этого же екзешника не вставляй, не надо...
apic (2010-03-04 16:34:00) [2]Каждый программист должен изобретать свой велосипед! Иначе нет смысла быть программистом, ведь на все случаи жизни уже давно написаны программы и в сети сервера на любой вкус есть, а умение работать с ресурсами исполняемого файла никогда не будут лишними. Я считаю, что суть программиста в том, что бы решать любые поставленные задачи, даже если это нафик не нужно, по крайней мере в качестве общего развития. Да и вообще прикрепить исходник исполняемому файлу быстрее чем залазить в тырнет, да и доступ к сети не всегда есть (вы не поверите).
DVM (2010-03-03 12:21:00) [3]
> apic (03.03.10 06:51) [19]
> Насчет маневров - исходники все время теряю
Давай и Delphi туда. А то вдруг потеряешь :) И Windows.
KSergey (2010-03-03 10:57:00) [4]> apic (03.03.10 06:51) [19]
> Насчет маневров - исходники все время теряю, хочу чтобы
> с ехе-шником всегда были
Завести репозиторий где-либо на бесплатном сервере исходников (том же гугле) + получить версионность и багтрекинг - это, конечно, не наш путь
Мы свой велик изобретть будем.
Только стоя, только в гамаке.
Anatoly Podgoretsky (2010-03-03 08:43:00) [5]> Leonid Troyanovsky (02.03.2010 18:47:17) [17]
Все свое ношу с собой.
apic (2010-03-03 06:57:00) [6]Да
TResourceStream.Create(Hinstance, 'Unit1' , RT_RCDATA);работает! Спасибо!
apic (2010-03-03 06:51:00) [7]Насчет маневров - исходники все время теряю, хочу чтобы с ехе-шником всегда были и чтобы без редактора ресурсов можно было извлечь. А на счет Res := TResourceStream.Create(Hinstance, 'Unit1' , RT_RCDATA);думаю так и должно быть - щас проверю...
Германн (2010-03-03 02:26:00) [8]
> А каков смысл оных маневров?
Мне тоже интересно.
Leonid Troyanovsky (2010-03-02 18:47:00) [9]
> apic (02.03.10 12:50) [14]
> Теперь вопрос, как это все дело выгрузить в файл(ы).
А каков смысл оных маневров?
--
Regards, LVT.
Leonid Troyanovsky (2010-03-02 17:59:00) [10]
> 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.
apic (2010-03-02 15:58:00) [11]Все работает если указываю не стандартный тип ресурса:
Unit1 PASFILE "Unit1.pas"
Unit2 PASFILE "Unit2.pas"
Unit3 PASFILE "Unit3.pas"
И все хорошо извлекается:
ExtractRes('PASFILE' , 'Unit1.pas', 'c:\Unit1.pas');
Кто нибудь может объяснить, что здесь происходит? RCDATA особый тип что-ли? Кстати в редакторе ресурсов тоже интересно все выглядит...
apic (2010-03-02 12:50:00) [12]Теперь вопрос, как это все дело выгрузить в файл(ы). Пытаюсь процедурой:
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 12:39:00) [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');
Говорит, что ресурс с таким именем не найден.
Leonid Troyanovsky (2010-03-02 07:56:00) [14]
> apic (02.03.10 06:53) [9]
> так попробовал: {$R 'source.res' 'source.rc'}, не помогает
Можно и так, но, чтобы оно работало,
вставить надо в dpr до раздела uses.
--
Regards, LVT.
apic (2010-03-02 07:51:00) [15]Спасибо Leonid Troyanovsky !!!!!!!!!!!!!!!!!!!!!!!!!! Подключил! Оказывается {$R 'source.res' 'source.rc'} работает только писать нужно сразу после program Project1;Но лучше конечно Shift+F11
Leonid Troyanovsky (2010-03-02 07:34:00) [16]
> apic (02.03.10 06:53) [9]
> как подключить этот source.rc
Shift+F11
--
Regards, LVT.
apic (2010-03-02 06:53:00) [17]как подключить этот source.rc. Стыдно сказать, но я даже так попробовал: {$R 'source.res' 'source.rc'}, не помогает. А на счет того, что res можно приделать, так это я знаю, вопрос как сделать, что бы он автоматически сам создавался, а не предварительно его компилировать brcc32.
Сергей М. (2010-03-01 20:58:00) [18]
> прикручиваю его директивой {$R source.r es}
А это самый source.r esпоявляется в результате компиляции проекта, к которому подключен source.rc
Игорь Шевченко (2010-03-01 17:29:00) [19]
> прикручиваю его директивой {$R source.rc}
{$R source.res}
brcc32 source.rc
Вася (2010-03-01 17:27:00) [20]попробуй так:
{$R 'source.res' 'source.rc'}