6

Delphi では、どのように MemoryStream をデータ リソースに書き込みますか?

procedure StringtoRes (filename:string; Inputstream: TMemoryStream);
var
 hUpdate: THandle;
begin
 hUpdate := BeginUpdateResource(PChar(filename), True);
 UpdateResource(hUpdate, RT_RCDATA, 'ID', LANG_NEUTRAL,InputStream,InputStream.Size);
 EndUpdateResource(hUpdate,False);
end;

このコードによってアクセス違反が発生し、どこから修正を開始すればよいかさえわからないため、不十分であるという強烈な感覚を覚えます。誰かいますか?

4

1 に答える 1

11

lpDataパラメータでは、オブジェクト ポインタの代わりにプロパティUpdateResource()の値を渡す必要があります。次に例を示します。TMemoryStream.MemoryTMemoryStream

procedure StringtoRes (const FileName: string; Inputstream: TMemoryStream); 
var 
  hUpdate: THandle; 
begin 
  hUpdate := BeginUpdateResource(PChar(FileName), True); 
  try
    UpdateResource(hUpdate, RT_RCDATA, 'ID', LANG_NEUTRAL, InputStream.Memory, InputStream.Size); 
  finally
    EndUpdateResource(hUpdate, False); 
  end;
end; 
于 2012-06-07T20:30:28.487 に答える