嵌入式文件到delphi exe应用程序(不作为应用程序的单独文件)

时间:2010-02-19 16:53:45

标签: delphi delphi-7

我想将一个文件(任何类型的类型)嵌入到我的exe应用程序中,并且能够在远程中提取使用它,我知道如何嵌入到资源中,但我不想放置在app目录中的文件,我想将所有文件(如.rec)存储到我的exe中,在c#中可以存储为文本文件,然后通过FileStream读取它,但在Delphi中,资源文件与exe文件是分开的。  有没有解决方案呢?非常感谢!

3 个答案:

答案 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文件   包含一对项目。首先   是一个嵌入提供的程序   资源文件中的富文本文件。该   第二个程序包括资源   文件并显示一个富文本   如上所述的富编辑组件。