встроенный файл в приложение Delphi Exe (не отдельный файл от приложения) - PullRequest
4 голосов
/ 19 февраля 2010

Я хочу встроить файл (любого типа) в мое exe-приложение и иметь возможность извлекать его на удаленном компьютере, чтобы использовать его, я знаю, как это сделать, встроив его в ресурс, но я не хочу помещать файлы в каталоге приложения, я хочу сохранить все файлы (например, .rec) в моем exe, в c # можно сохранить как текстовый файл, а затем прочитать его с помощью FileStream, но в Delphi файлы ресурсов отделены от exe-файла. Есть ли решение, чтобы сделать это? Большое спасибо!

Ответы [ 3 ]

16 голосов
/ 19 февраля 2010

Вы должны создать файл .rc и добавить его в свой проект. Содержимое файла RC выглядит так:

FIXED48                 IMAGE           ..\Resources\Fixed48x48.png
MENU16                  IMAGE           ..\Resources\Menu16x16.png
TICK            SOUND       ..\Resources\Tick.wav
PING            SOUND       ..\Resources\Ping.wav

Теперь, после того как вы выполните сборку, вы можете загрузить один из этих файлов с помощью TResourceStream:

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;
2 голосов
/ 03 июня 2010

В DelphiDabbler есть отличная статья на эту тему. Они даже включают в себя 2 примера проектов для загрузки, которые показывают, как встроить файл в качестве ресурса и как прочитать его обратно.

Вы можете скачать обработанный пример , который демонстрирует то, что мы описали здесь - он использует вышеуказанный код. Почтовый файл содержит пару проектов. Первый это программа, которая встраивает поставляемый форматированный текстовый файл в файле ресурсов. вторая программа включает в себя ресурс файл и отображает форматированный текст в компонент расширенного редактирования, как указано выше.

2 голосов
/ 19 февраля 2010

У вас должна получиться возможность заставить компилятор Delphi связать ваш ресурс с вашим EXE-файлом, добавив его как прагму {$ R myresource.res} в модуль в вашем проекте. Затем вы можете получить дескриптор к нему через вызов FindResource, когда вам нужно прочитать его.

Эта статья проведет вас через соответствующие шаги.

...