2

Delphi コンパイラが発行するいくつかのヒント (*) を取り除こうとしています。ToolsAPIを参照すると、Notifier を介してこれを達成するのに役立つように見えるIOTAToolsFilterが表示されますが、これを呼び出す方法がわかりません (フィルターにアクセスできる xxxServices を介して)。

私がここで正しい軌道に乗っているかどうか、誰か教えてもらえますか? ありがとう!

(*) 特に、親の大文字と小文字が一致しないオーバーライドされたメソッドに関する H2365。約 500 万行のアクティブなコードがあり、コード規則が Embarcadero のものとはわずかに異なる場合は、あまり良くありません。私たちは何ヶ月もヒントなしで作業してきましたが、ちょっと寂しいです。:-)

4

2 に答える 2

4

BorlandIDEServices に IOTAToolsFilter を問い合わせることができたとしても、そのインターフェイスは、求めていることを実行するのに役立ちません。このインターフェイスは、(IDE が MSBuild を使用する前に) IDE に追加のビルド ツール (コンパイラなど) を追加するためのメカニズムの一部として導入されました。特定のビルド ツールからの出力を処理するカスタム「フィルタ」を作成することはできましたが、組み込みツールの 1 つ (デルファイ コンパイラなど) にフィルタを適用することはできませんでした。

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 を使用する必要はありません。

于 2010-06-11T18:47:58.770 に答える
1

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 に正しいインターフェイスを返さないエラーがあります。

于 2010-06-08T13:49:45.380 に答える