Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизРесурс в .exe Найти похожие ветки
← →
OlegL (2003-11-12 10:45) [0]Может кто-то знает и подкинет идею как впихать фаил с любым расширением в экзэшник, что-бы потом его можно было вытаскивать и записать на диск. Примерно как ресурсные фаилы (bitmap, cursor, icon и всё такое).
← →
Севостьянов Игорь (2003-11-12 10:58) [1]Все очень просто - запихивание нестандартных ресурсов (любые файлы) - происходит следующим образом - вот пример:
Создаем для удобства отд. папку с ресурсами (файлами) например нам надо хранить там звуки и картинки - назовем ее Resources
Создаем в ней 2 файла:
GenRes.bat
----
BRCC32.EXE ImgsSnds.rc -fo"ImgsSnds.res"
----
и
ImgsSnds.rc
----
SND_N_COW SNDDATA "NCow.mp3"
SND_C_COW SNDDATA "CCow.mp3"
IMG_N_COW IMGDATA "NCow.jpg"
IMG_C_COW IMGDATA "CCow.jpg"
----
После запуска батника получаем ImgsSnds.res файл
Теперь как нам их подключить в программу и достать в процессе работы:
-----
unit Main;
interface
uses
SysUtils, Classes, Forms, Controls, StdCtrls, ExtCtrls,
Jpeg, MMSystem;
type
TfrmMain = class(TForm)
pnlForm: TPanel;
lblTitle: TLabel;
lblNormal: TLabel;
lblCrazy: TLabel;
btnClose: TButton;
pnlLeftImage: TPanel;
pnlRightImage: TPanel;
imgNormal: TImage;
imgCrazy: TImage;
procedure imgNormalDblClick(Sender: TObject);
procedure imgCrazyDblClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.DFM}
{$R ImgsSnds.res}
function GetImageFromResource(Instance: Cardinal; ResourceName, ResourceType: string): TJPEGImage;
var
Stream: TResourceStream;
begin
Stream := TResourceStream.Create(Instance, ResourceName, PAnsiChar(ResourceType));
Result := TJPEGImage.Create;
try
Result.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
procedure PlaySoundFromResource(Instance: Cardinal; ResourceName, ResourceType: string);
var
Stream: TResourceStream;
begin
Stream := TResourceStream.Create(Instance, ResourceName, PAnsiChar(ResourceType));
try
PlaySound(Stream.Memory, 0, SND_MEMORY or SND_ASYNC);
finally
Stream.Free;
end;
end;
procedure TfrmMain.imgNormalDblClick(Sender: TObject);
begin
PlaySoundFromResource(HInstance, "SND_N_COW", "SNDDATA");
end;
procedure TfrmMain.imgCrazyDblClick(Sender: TObject);
begin
PlaySoundFromResource(HInstance, "SND_C_COW", "SNDDATA");
end;
procedure TfrmMain.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
Graphic: TJPEGImage;
begin
try
Graphic := GetImageFromResource(HInstance, "IMG_N_COW", "IMGDATA"); imgNormal.Picture.Graphic := Graphic;
Graphic := GetImageFromResource(HInstance, "IMG_C_COW", "IMGDATA"); imgCrazy.Picture.Graphic := Graphic;
finally
if Assigned(Graphic) then FreeAndNil(Graphic);
end;
end;
end.
-----
← →
AbrosimovA (2003-11-12 11:06) [2]Или с помощью Restorator"а.
← →
OlegL (2003-11-12 11:09) [3]Звуки и картинки я знаю включить. Мне нужен другой, например dbf-фаил.
← →
AbrosimovA (2003-11-12 11:26) [4]В рестораторе в файле *.res создаёшь итем RCData, затем простым drag-n-drop переносишь туда свой dbf-файл.
← →
OlegL (2003-11-12 11:30) [5]Спасибо, но где его взять этого ресторатора.
← →
KSergey (2003-11-12 11:47) [6][3] OlegL © (12.11.03 11:09)
Звуки и картинки я знаю включить. Мне нужен другой, например dbf-фаил.
Да хоть что!
Вообще говоря, вот эти названия (SNDDATA, IMGDATA) - это все выдумки того, кто что-то в ресурсы запихивает.
Т.е. можетет смело пихать в ресурс любой файл по приведенной выше методики. Название тип выдумайте сами какое в голову взбредет ;)
Синтаксис rc-файла от этого не меняется ;)
← →
OlegL (2003-11-12 11:49) [7]2 Севостьянов Игорь
Может можно как-то это
SND_N_COW SNDDATA "NCow.mp3"
поменять так чтобы в место SND_*, SNDDATA и *.mp3 написать другое(что-то вроде "битдата").
← →
AbrosimovA (2003-11-12 11:57) [8]
> OlegL © (12.11.03 11:30) [5]
> Спасибо, но где его взять этого ресторатора.
Ищешь в инете, к примеру, Restorator 2.52.
Я думаю эта программка когда-нибудь тебе пригодится.
← →
OlegL (2003-11-12 12:15) [9]Спасибо всем.
вот что у меня в бат файле:
BRCC32.EXE export.rc -fo"export.res"
и вот что у меня в rc файле:
export DATA "export.dbf"
а вот что у меня в програме:
var
res_str : TResourceStream;
file_str : TFileStream;
....
res_str := TResourceStream.Create(HInstance, "export", "DATA");
file_str := TFileStream.Create(path, fmCreate);
file_str.CopyFrom(res_str, res_str.Size);
....
:-)))) и работает :-))))
← →
Anatoly Podgoretsky (2003-11-12 12:36) [10]Все это лишнее, достаточно создать .rc и подключить к проекту, никаких BRCC32 и рестораторов не требуется.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c