2012-06-07 20 views
6

En Delphi, ¿cómo se escribe un MemoryStream en un recurso de datos?Escribir una secuencia en un recurso RCDATA

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; 

Este código me da una violación de acceso y una intensa sensación de inadequancy porque no sé ni por dónde empezar su fijación. ¿Alguien?

Respuesta

11

En el parámetro de lpDataUpdateResource(), tiene que pasar el valor de la propiedad en lugar del puntero TMemoryStream objeto TMemoryStream.Memory, por ejemplo:

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; 
Cuestiones relacionadas