小编Mod*_*ode的帖子

如何在这段代码中释放TOleStream

这是在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的情况下将数据发送到数据流?

嗨,Remy,您可以在这里找到一个带有fastmm和问题过程的命名空间处理程序的工作演示项目:http://mode5.webs.com/namespace.7z 当项目加载时,单击按钮以加载命名空间处理程序文件.退出时,应该得到fastmm错误.亲切的问候,

delphi ole fastmm

6
推荐指数
1
解决办法
1112
查看次数

如果语言环境没有代码页,如何检测语言环境/语言?

我需要从unicode widestring中检测语言.我已经尝试使用iMultiLang2接口,如果语言环境有代码页,它就能正常工作.某些语言环境/语言没有代码页,仅映射到unicode.我怎样才能得到那些lcid?格鲁吉亚语,印地语和许多其他语言没有代码页,只有unicode排序规则

我正在使用Delphi7 Enterprise.

非常感谢任何帮助

问候

delphi unicode

1
推荐指数
1
解决办法
610
查看次数

标签 统计

delphi ×2

fastmm ×1

ole ×1

unicode ×1