2

私の Delphi 7 コードでは、次の手順が宣言されています。

procedure MyProcedure(var HintInfo: THintInfo);

Delphi XE4 への移行中に、コンパイラは次の警告をスローします。

W1000 Symbol 'THintInfo' is deprecated: 'Use Vcl.Controls.THintInfo'

私はグーグルで検索し、http://www.alphaskins.com/forum/index.php? showtopic=5005 で次の解決策を見つけました

{$IFDEF UNICODE}
THintInfo = Controls.THintInfo;
{$ENDIF}

それは正しいですか、これを行う効率的な方法はありますか。

Controlsすでにユニットが追加されていusesます。

4

1 に答える 1

3

何が起こったかというと、型の定義が Forms から Controls に移動したことです。Embarcadero は、コントロールの実際の定義を参照する定義をフォーム ユニットに残し、フォームでその定義を非推奨としてマークしました。

コンパイラの警告は、何をすべきかを示しています。

Use Vcl.Controls.THintInfo

ここで、Vcl.Controls ではなく Controls をインポートしているため、定義したユニット スコープ名を利用して、このシンボルに次の名前を付ける必要があります。

Controls.THintInfo

個人的には、Embarcadero が Forms から Controls に移動したときにその定義を削除していればよかったと思います。彼らはアップグレード時にコンパイルを壊したくないのですが、コントロールではなくフォームをインポートするのは誰ですか? 代わりに、誰もが非推奨の警告に直面しなければならず、それに対処しなければなりません。Embarcadero が選んだ道は、宣言を単に移動するよりも、ユーザーにより大きな影響を与えると私は信じています。

于 2013-10-17T06:26:07.237 に答える