将流写入RCDATA资源

N. *_*cA. 6 delphi resources stream

在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;
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个访问冲突和强烈的不适感,因为我甚至不知道从哪里开始修复它.有没有人?

Rem*_*eau 11

lpData参数中UpdateResource(),您需要传递TMemoryStream.Memory属性的值而不是TMemoryStream对象指针,例如:

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; 
Run Code Online (Sandbox Code Playgroud)