How to retrieve rich text from a resource file and save it to disk #153

These are the basic steps:

  1. Create a resource file
  2. Include it in your project
  3. Load the file from the resource file into a TResourceStream
  4. Create a TFileStream with the filename you want to write to
  5. Use CopyFrom to get the data from the TResourceStream to the TFileStream.
  6. Free both the streams

The file is magically written to disk, without any need to call a write procedure or anything like that. It takes a file called test.rtf from the resource file TEST.RES and saves it out to disk as test2.rtf in the application folder:

procedure TfrmMain.Button1Click(Sender: TObject);
var
  ResStream: TResourceStream
  MyFileStream: TFileStream;
begin
  try
    MyFileStream := TFileStream.Create(
      ExtractFilePath(Application.ExeName) + 'test2.rtf ',
      fmCreate or fmShareExclusive
    );
    ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
    MyFileStream.CopyFrom(ResStream, 0);
  finally
    MyFileStream.Free;
    ResStream.Free;
  end;
end;
Original resource: The Delphi Pool
Author: Martin Holmes
Added: 2010/02/22
Last updated: 2010/02/22