2012-06-07 13 views
6

In delphi, come si scrive un MemoryStream in una risorsa dati?Scrittura di un flusso su una risorsa 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; 

Questo codice mi dà una violazione di accesso e un intenso sentimento di inadeguatezza, perché io non so nemmeno da dove cominciare risolverlo. Qualcuno?

risposta

11

Nel parametro lpData di UpdateResource(), è necessario passare il valore della TMemoryStream.Memory proprietà invece del puntatore TMemoryStream oggetto, ad esempio:

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; 
Problemi correlati