2012-06-07 11 views
6

में स्ट्रीम लिखना डेल्फी में, आप डेटा संसाधन में मेमोरीस्ट्रीम कैसे लिखते हैं?एक आरसीडीएटीए संसाधन

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; 

इस कोड को मुझे एक पहुँच उल्लंघन और inadequancy की एक तीव्र अहसास देता है, क्योंकि मैं भी जहां यह तय करने शुरू करने के लिए पता नहीं है। क्या कोई?

उत्तर

11

UpdateResource() की lpData पैरामीटर में, आपको, TMemoryStream वस्तु सूचक के बजाय TMemoryStream.Memory संपत्ति के मूल्य में उत्तीर्ण होना जैसे:

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; 
संबंधित मुद्दे