Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как при компиляции автоматически поместить исходный код [D7, WinXP]


Страницы:   1 2

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'}


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо