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.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; 
于 2012-06-07T20:30:28.487 回答