我想将一个文件(任何类型的类型)嵌入到我的exe应用程序中,并且能够在远程中提取使用它,我知道如何嵌入到资源中,但我不想放置在app目录中的文件,我想将所有文件(如.rec)存储到我的exe中,在c#中可以存储为文本文件,然后通过FileStream读取它,但在Delphi中,资源文件与exe文件是分开的。 有没有解决方案呢?非常感谢!
答案 0 :(得分:16)
您应该制作一个.rc文件并将其添加到您的项目中。 RC文件的内容如下:
FIXED48 IMAGE ..\Resources\Fixed48x48.png
MENU16 IMAGE ..\Resources\Menu16x16.png
TICK SOUND ..\Resources\Tick.wav
PING SOUND ..\Resources\Ping.wav
现在,在进行构建之后,您可以使用TResourceStream加载其中一个fikles:
procedure TdmReportGeneral.InsertLogo(Memo: TStringList; View: TfrView);
var
S: TResourceStream;
begin
if (View is TfrPictureView) and (View.Name = 'Logo') then begin
S := TResourceStream.Create( 0, 'FIXED48', 'IMAGE' );
try
// do something useful... TfrPictureView(View).Picture.MetaFile.LoadFromStream( S );
finally
S.Free();
end;
end;
end;
答案 1 :(得分:2)
您应该能够让Delphi编译器将您的资源链接到您的EXE中,方法是将它作为{$ R myresource.res} pragma添加到项目的一个单元中。然后,当您需要阅读它时,可以通过调用FindResource来获取它的句柄。
此article会指导您完成相应的步骤。
答案 2 :(得分:2)
DelphiDabbler在这个主题上有a great article。它们甚至包括2个下载示例项目,展示如何将文件作为资源嵌入,以及如何将其读回。
您可以下载worked example 演示了我们在这里描述的内容 - 它使用上面的代码。 zip文件 包含一对项目。首先 是一个嵌入提供的程序 资源文件中的富文本文件。该 第二个程序包括资源 文件并显示一个富文本 如上所述的富编辑组件。