2012-06-07 24 views
6

delphiでは、MemoryStreamをデータリソースにどのように書き込むのですか?私もそれを固定開始する場所を知らないので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; 

このコードは私に、アクセス違反と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; 
関連する問題