使用 FastMM4 时如何从代码中检测到
How can I detect from code when FastMM4 is used
我想在使用 FastMM4 时在表单上显示一个标签(在项目文件中 'Uses'),这样我就不会错误地将可执行文件提供给不使用 FastMM4 的人已安装 FastMM_FullDebugMode.dll
。
我试过这些,但没有效果:
{$ifdef FullDebugMode}
LblFastMM4.Visible := true;
{$endif}
{$ifdef EnableMemoryLeakReporting}
LblFastMM4.Visible := true;
{$endif}
如何在运行时检测 FastMM4?
注意:我 'officially' 不使用 FastMM4 分发应用程序。当我想将 alpha 版本提供给非技术用户快速查看时,这只是对自己的提醒。如果他们随后遇到错误,那就很烦人了。
您的 {$ifdef}
不起作用,因为您自己的代码未直接包含 FastMM4Options.inc
,因此 FastMM 的条件未在您的代码范围内定义。它们仅在 FastMM 代码的范围内定义。您无法测试 {$define}
在其他人的单元中的条件。
但是,您可以使用 {$If Declared(...)}
检查范围内的 public 符号是否使用了另一个单元。在这种情况下,FastMM4.pas
的 interface
部分在某些条件下声明各种符号,例如 TRegisteredMemoryLeak
当 EnableMemoryLeakReporting
定义时, DebugGetMem
当 FullDebugMode
定义等
{$if declared(DebugGetMem)}
LblFastMM4.Visible := true;
{$endif}
{$if declared(TRegisteredMemoryLeak)}
LblFastMM4.Visible := true;
{$endif}
试试这个:
LblFastMM4.Visible := InitializationCodeHasRun;
FastMM 可以配置很多选项。在您的情况下,选项 DoNotInstallIfDLLMissing 可能很有价值。一个不错的应用程序可用于设置选项:https://jedqc.blogspot.com/2007/07/new-fastmm4-options-interface.html
我想在使用 FastMM4 时在表单上显示一个标签(在项目文件中 'Uses'),这样我就不会错误地将可执行文件提供给不使用 FastMM4 的人已安装 FastMM_FullDebugMode.dll
。
我试过这些,但没有效果:
{$ifdef FullDebugMode}
LblFastMM4.Visible := true;
{$endif}
{$ifdef EnableMemoryLeakReporting}
LblFastMM4.Visible := true;
{$endif}
如何在运行时检测 FastMM4?
注意:我 'officially' 不使用 FastMM4 分发应用程序。当我想将 alpha 版本提供给非技术用户快速查看时,这只是对自己的提醒。如果他们随后遇到错误,那就很烦人了。
您的 {$ifdef}
不起作用,因为您自己的代码未直接包含 FastMM4Options.inc
,因此 FastMM 的条件未在您的代码范围内定义。它们仅在 FastMM 代码的范围内定义。您无法测试 {$define}
在其他人的单元中的条件。
但是,您可以使用 {$If Declared(...)}
检查范围内的 public 符号是否使用了另一个单元。在这种情况下,FastMM4.pas
的 interface
部分在某些条件下声明各种符号,例如 TRegisteredMemoryLeak
当 EnableMemoryLeakReporting
定义时, DebugGetMem
当 FullDebugMode
定义等
{$if declared(DebugGetMem)}
LblFastMM4.Visible := true;
{$endif}
{$if declared(TRegisteredMemoryLeak)}
LblFastMM4.Visible := true;
{$endif}
试试这个: LblFastMM4.Visible := InitializationCodeHasRun;
FastMM 可以配置很多选项。在您的情况下,选项 DoNotInstallIfDLLMissing 可能很有价值。一个不错的应用程序可用于设置选项:https://jedqc.blogspot.com/2007/07/new-fastmm4-options-interface.html