12

単一の .exe のみを配布したいのですが、実行時に埋め込み画像リソースをユーザーのハードディスク ドライブに抽出したいと考えています。

私はできますか?

4

4 に答える 4

19

Delphi の TResourceStream を使用します。コンストラクターがリソースを見つけてメモリにロードし、SaveToFile メソッドがディスク書き込みを行います。

これに似たものが機能するはずです:

var
  ResStream: TResourceStream;
begin
  ResStream := TResourceStream.Create(HInstance, 'YOURRESOURCENAME', RT_RCDATA);
  try
    ResStream.Position := 0;
    ResStream.SaveToFile('C:\YourDir\YourFileName.jpg');
  finally
    ResStream.Free;
  end;
end;

名前の代わりにリソース ID を使用できる場合は、メモリが少し少なくなります。その場合、Create を CreateFromID に置き換え、文字列名ではなく数値 ID を指定します。

于 2010-09-10T12:44:58.647 に答える
4

を作成しますTResourceStream。モジュール インスタンス ハンドル (通常SysInit.HInstanceは現在の EXE ファイル、または または から取得したLoadLibraryものLoadPackage)、リソース タイプ (rt_Bitmapまたは などrt_RCData)、およびリソース名または数値 ID が必要です。次に、ストリームのSaveToFileメソッドを呼び出します。

于 2010-09-10T12:45:36.277 に答える
2
try
   if not Assigned(Bitmap)
   then
      Bitmap := TBitmap.Create();
   Bitmap.LoadFromResourceName(HInstance,SRC);
except
   on E:Exception do
      ShowMessage(e.Message);
end;

次に、ビットマップをディスクに保存します。

于 2010-09-10T12:45:37.557 に答える
1

リソース自体を操作する必要がある場合、これも役立つかもしれません。 Delphidabbler / ResourceFiles

于 2010-09-10T13:39:56.660 に答える