Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.02;
Скачать: CL | DM;

Вниз

Как при компиляции автоматически поместить исходный код   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.009 c
2-1307696769
Drowsy
2011-06-10 13:06
2011.10.02
Форма не разворачивается на весь экран.


2-1308231708
@!!ex
2011-06-16 17:41
2011.10.02
TPageControl не получается сделать OwnerDraw


1-1267175596
Vlad40
2010-02-26 12:13
2011.10.02
D2010 - внешний вид (border) и др. у TCategoryPanelGroup


2-1307690430
@!!ex
2011-06-10 11:20
2011.10.02
Кнопки и PageControl игнорируются Font.Charset


2-1307290562
IPranker
2011-06-05 20:16
2011.10.02
Столкновения прямоугольников.