我试图摆脱一些提示(*)Delphi编译器发出的提示。浏览 Toolsapi 我看到了 iotatoolsfilter 看来这可能会帮助我通过通知器来实现这一目标,但是我不确定如何调用此功能(通过我可以访问过滤器的XXXServices)。

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

(*)尤其是H2365关于不匹配父级的方法的H2365。当您有大约500万行的有效代码,与Embarcadero的代码略有不同时,并不是那么好。几个月来,我们一直没有提示,我们有点想念。 :-)

有帮助吗?

解决方案

即使您可以查询Borlandideservices对IotatoolSfilter,该界面也不会帮助您完成所要求的事情。该界面是作为用于向IDE添加其他构建工具(编译器等)的机制的一部分(在IDE使用MSBUILD之前)。它使您可以编写自定义“过滤器”来处理特定构建工具的输出,但是它不允许您将过滤器应用于内置工具之一(例如Delphi编译器)。

原因 Supports(BorlandIDEServices, IOTAToolsFilter, OTAToolsFilter) Delphi2010中的呼叫失败是,一旦将MSBUILD支持添加到IDE中,旧方法将构建工具添加到IDE中被禁用,而Borlandideservices接口不再支持IOTATOTOLSFILTER。

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

至于您希望过滤特定提示的愿望,我不知道通过The Toolsapi做到这一点的方法。似乎可以添加到Iotamessageservices(列举,过滤并可能更改ide消息视图中的消息的能力)似乎是一件合理的事情。我将在质量中心输入请求。

另外,请投票购买QC#35774(http://qc.embarcadero.com/wc/qcmain.aspx?d=35774),好像已经实现了,您无需将ToolsAPI使用用于此类事情。

其他提示

根据 http://docwiki.embarcadero.com/radstudio/en/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归因
不隶属于 StackOverflow
scroll top