在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;
这段代码给了我一个访问冲突和强烈的不适感,因为我甚至不知道从哪里开始修复它.有没有人?
解决方法
在UpdateResource()的lpData参数中,您需要传递TMemoryStream.Memory属性的值而不是TMemoryStream对象指针的值,例如:
procedure StringtoRes (const FileName: string; Inputstream: TMemoryStream); var hUpdate: THandle; begin hUpdate := BeginUpdateResource(PChar(FileName),True); try UpdateResource(hUpdate,InputStream.Memory,InputStream.Size); finally EndUpdateResource(hUpdate,False); end; end;