delphi – 如何在这段代码中释放TOleStream
发布时间:2020-12-15 09:51:41 所属栏目:大数据 来源:网络整理
导读:这是在Delphi中完成的自定义命名空间处理程序,用于将文件加载到webbrowser组件中. Datastream:IStream;var F: TFileStream; Dummy: INT64;begin F:=TFileStream.Create(strfilename fmOpenRead); CreateStreamOnHGlobal(0,True,DataStream); TOleStream.Crea
这是在Delphi中完成的自定义命名空间处理程序,用于将文件加载到webbrowser组件中.
Datastream:IStream; var F: TFileStream; Dummy: INT64; begin F:=TFileStream.Create(strfilename fmOpenRead); CreateStreamOnHGlobal(0,True,DataStream); TOleStream.Create(DataStream).CopyFrom(F,F.Size); DataStream.Seek(0,STREAM_SEEK_SET,Dummy); TotalSize := F.Size; F.Free; end; 问题是Fastmm4在程序结束时出现内存泄漏错误并且说没有释放TOleStream.我如何释放它?如果我把TOleStream放在变量中并像这样分配 var TOS:TOleStream; TOS:=TOleStream.Create(DataStream) TOS.CopyFrom(F,F.Size); .. TOS.Free; End; 当我释放TOS变量时,我得到一个错误(EAccessViolation指向ComObj中的TComObject.ObjRelease).非常感谢您的意见和帮助.这个问题一直困扰着我一段时间. 我也想知道它是否可能是FastMM4的东西?它会提供虚假信息吗?在一些代码如下. TOLEStream通常如何被释放? f.SaveToStream(TOleStream.Create(DataStream)); 有没有办法在不使用TFileStream的情况下将数据发送到数据流? 嗨,雷米, 解决方法
如果需要将IStream接口传递给某个东西,你应该查看TStreamAdapter对象,你可以在TFileStream上创建一个,并传递它的IStream接口.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |