繁体   English   中英

如何过滤Delphi 2010编译器的输出(提示)?

[英]How to filter Delphi 2010 compiler output (hints)?

我试图摆脱Delphi编译器发出的一些提示(*)。 浏览ToolsAPI时,我看到一个IOTAToolsFilter看起来可能可以通过它的Notifier来帮助我完成此任务,但是我不确定如何调用它(通过我可以访问该xxxServices的筛选器)。

谁能告诉我我在这里的路是否正确? 谢谢!

(*)特别是,H2365讨论了与父类不匹配的重写方法。 当您有大约500万行活动代码且代码约定与Embarcadero的约定稍有不同时,情况就不太好了。 几个月以来,我们一直在没有任何提示的情况下工作,我们有点想念'm。 :-)

即使您可以查询BorlandIDEServices的IOTAToolsFilter,该接口也无法帮助您完成所要的操作。 该接口是作为向IDE添加其他构建工具(编译器等)的机制的一部分引入的(在IDE使用MSBuild之前)。 它允许您编写自定义“过滤器”以处理特定构建工具的输出,但不允许您将过滤器应用于其中一个内置工具(如delphi编译器)。

在Delphi2010中, Supports(BorlandIDEServices, IOTAToolsFilter, OTAToolsFilter)调用失败的原因是,一旦将MSBuild支持添加到IDE中,就会禁用将构建工具添加到IDE中的旧方法,并且BorlandIDEServices接口不再支持IOTAToolsFilter。

IOTAToolsFilter的声明可能应该在ToolsAPI.pas中标记为已弃用(或者至少应该在源代码注释中提到它不再受支持)。

至于您希望过滤特定提示的想法,我不知道通过ToolsAPI进行过滤的方法。 可以将其添加到IOTAMessageServices(在IDE的“消息视图”中枚举,过滤并可能更改消息的功能)似乎是一件合理的事情。 我将为此在QualityCentral中输入一个请求。

另外,请投票给QC#35774( http://qc.embarcadero.com/wc/qcmain.aspx?d=35774 ),就好像已实现该计划一样,您无需使用ToolsAPI进行此类操作。

根据http://docwiki.embarcadero.com/RADStudio/zh/Obtaining_Tools_API_Services ,应该可以使用BorlandIDEServices直接访问它,例如:

var
  OTAToolsFilter: IOTAToolsFilter;
begin    
if Supports(BorlandIDEServices, IOTAToolsFilter, OTAToolsFilter) then
  ShowMessage('supports IOTAToolsFilter')
else
  ShowMessage('IOTAToolsFilter NOT supported');
end;

但是,这不会在Delphi 2010中返回所需的接口(您会收到不支持的消息),因此文档中存在错误,或者BorlandIDEServices中的错误未返回正确的接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM