Если для работы программы нужны какие-то нередактируемые файлы (картинки, звуковые, текстовые и т п), то удобно "спрятать" их внутрь .exe-файла. В этом случае они лучше защищены от потери и исправлений. Создаем текстовый файл с расширением .rc, в котором находится описание создаваемого ресурса(ов) (имя, тип, путь к файлу). Этот rc-файл компилируется программой brcc32.exe (Delphi\bin\brcc32.exe) и в результате создается файл ресурсов Fname.RES (например). В программу включается директива {$R Fname} и процедуры для доступа к содержимому этого файла.
В комментариях модуля Unit1 есть несколько полезных примеров из Инета.
В самой программе используется картинка из ресурса (фон формы - с прозрачными краями) и извлекается из ресурса и записывается на диск файл Dvig1.exe. ( прозрачность не поддерживается в Windows 9* )

unit Unit1;
(*Форма хитрой формы (используется прозрачность: в инспекторе
- TransparetnColor = true, TransparetnColorValue = clRed).
- borderStyle = None - чтобы убрать рамку окна
---- Как поместить .bmp в ресурс ? ----
Допустим, мы хотим подключить BMP файл с названием some24bit.bmp
к нашему приложению. Создадим ресурсный файл samp.rc и добавим туда
следующую строчку:
MYBITMAP BITMAP ..\Resource\some24bit.bmp
Компилируем файл samp.rc для получения бинарного файла ресурса
samp.res, набрав в командной строке brcc32.exe samp.rc.
Подключим в наш проект полученный ресурсный файл, добавив директиву
компилятора {$R samp.res}.
Copyright © 2002 Мироводин Дмитрий
Из Статьи "Обзор формата DIB и компонентов для работы с ним"
-----------
/Добавление в программу дополнительного EXE-файла
1. Пишем в блокноте RC-файл, куда прописываем все нужные нам программы,
например: ARJ EXEFILE C:\UTIL\ARJ.EXE
2. Компилируем его в ресурс при помощи Brcc32.exe. Получаем RES-файл.
3. Далее в тексте нашей программы:
implementation {$R *.DFM} {$R test.res}
//Это наш RES-файл
procedure ExtractRes(ResType, ResName, ResNewName : String);
var Res : TResourceStream;
begin Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName); Res.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin // Записывает в текущую папку arj.exe
ExtractRes('EXEFILE', 'ARJ', 'ARJ.EXE');
end;
Автор статьи - www.delphi.mastak.ru
Статью добавил - maDByte
---------------------
Строка в .RC для включения JPEG-картинки:
1 RCDATA "MyPic.jpg"
Источник получения информации: http://www.delphimaster.ru
--------------
Строка в InExe.RC для включения .RTF - файла:
RTFRES RT_RCDATA USERS.RTF
Компилируем:
BRCC32 InExe.RC -v
( -v - параметр , обеспечивающий обратную связь с экраном. )
В файле проекта .dpr добавится следующая директива {$R } ...
{$R INEXE.RES}
Для доступа к ресурсам в вашем коде надо добавить ...
var
RS : TResourceStream;
begin
// создание потока ресурсов
RS := TResourceStream.Create(HInstance, 'RTFRES', 'RT_RCDATA');
// использование ресурсов
RichEdit.Lines.LoadFromStream(RS);
// освобождение потока ресурсов
RS.Free;
end;
*****
( Размещение данных в EXE
By Alan Lloyd - alanglloyd@aol.com
Перевод Руденко Е.В. janer@newmail.ru октябрь 2001 года )
-----------
Строка в MyFont.RC для включения в ресурс шрифта:
MY_FONT ANYOL1 "Bauhs93.ttf"
Компиляция:
BRCC32 MyFont
В тексте Вашей программы разместите:
{$R MyFont.res}
Правильным будет разместить это в секции реализации после строчки {$R *.DFM}.
Процедура создания файла из ресурса, делающая шрифт доступным для использования.
procedure TForm1.FormCreate(Sender: TObject);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(hInstance, 'MY_FONT', Pchar('ANYOL1'));
Res.SavetoFile('Bauhs93.ttf');
Res.Free;
AddFontResource(PChar('Bauhs93.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
Использование шрифта:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Font.Name := 'Bauhaus 93';
end;
Удаление этого шрифта:
procedure TForm1.FormDestroy(Sender: TObject);
begin
RemoveFontResource(PChar("Bauhs93.ttf"));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
end;
Источник: не известен (Инет).
----------
1. Строка в MyWave.RC для включения в ресурс wav-файла:
MYWAVE RCDATA LOADONCALL MyWave.wav
Формат строки:
имя | тип | опции | имя файла, где
Имя - уникальное имя ресурса, по которому мы затем будем с ним работать.
Теоретически (да и практически) имя не чувствительно к регистру, но лучше не рисковать и
всегда именовать ресурсы большими буквами
2.Компилируем ресурсный файл при помощи brcc32.exe (он лежит в папке BIN Delphi)
brcc32.exe MyWave.rc, получаем MyWave.res.
3. Перемещаем полученный ресурс в папку проекта Затем в программе воспроизведение звука
выглядит примерно так:
{$R MyWave.res} // Не забудем подключить наш ресурс
procedure RetrieveMyWave;
var
hResource : THandle;
pData : Pointer;
begin
hResource:=LoadResource( hInstance, FindResource(hInstance, 'MYWAVE', RT_RCDATA));
try
pData := LockResource(hResource);
if pData = nil then raise Exception.Create('Cannot read MyWave');
// Здесь pData указывает на MyWave
// Теперь можно, например, проиграть его (Win32):
PlaySound('MyWave', 0, SND_NODEFAULT);
finally
FreeResource(hResource);
end;
end;
(C) Зайцев Олег
-----------
Windows поддерживает такие виды ресурсов:
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
Александр Василевский.
e-mail: info@alvas.virtualave.net
www: http://alvas.virtualave.net/index_r.html
--------------
Номера типов:
-------------
RT_CURSOR 1
RT_BITMAP 2
RT_ICON 3
RT_MENU 4
RT_DIALOG 5
RT_STRING 6
RT_FONTDIR 7
RT_FONT 8
RT_ACCELERATOR 9
RT_RCDATA 10
RT_MESSAGETABLE 11
RT_GROUP_CURSOR 12
RT_GROUP_ICON 14
RT_VERSION 16
RT_DLGINCLUDE 17
RT_PLUGPLAY 19
RT_VXD 20
RT_ANICURSOR 21
RT_ANIICON 22
-------- Примеры: RC-файлы, использованные в этом проекте: ------
MYRES.RC:
BMP1 BITMAP Fonn2_.bmp
-----
Myres2.rc:
DVIG1 EXEFILE DVIG1.EXE
Эти файлы компилируются программой brcc32.exe (папка Delphi\bin\ ),
например:
>brcc32 MYRES.RC
На выходе получаются: myres.res myres2.res
*)
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R myres.res}
{$R myres2.res}
var FBMP1: TBitMap;
procedure ExtractRes(ResType, ResName, ResNewName : String);
var Res : TResourceStream;
begin Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
If not FileExists('Dvig1.exe') then
ExtractRes('EXEFILE', 'DVIG1', 'DVIG1.EXE');
FBMP1 := TBitmap.Create;
FBMP1.LoadFromResourceName(hInstance, 'BMP1');
// TransparentColorValue := $000000FF; - см в инспекторе
{FBMP1.Canvas.Pixels[2,2]};
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Draw(0,0,FBMP1);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012;
{Из книги А.Федорова Delphi 2.0 для всех М. 1997 г}
begin
ReleaseCapture;
Form1.Perform(WM_SysCommand, SC_DragMove, 0 );
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Application.Terminate;
end;
end.