2017-06-08 6 views
7

私たちのコードをより高度で柔軟なTArray<T>ジェネリック型に移行するために、の代わりにという配列型宣言(実際はただ1つ以上)をマークする必要があります。DelphiでArray型宣言を非難するには?

私はこれ試してみた:

type 
    TArrayChars = array of Char deprecated; 

を私はコンパイルエラーました:宣言された型は、例えば、配列でない場合E2029 ';' expected but identifier 'deprecated' found

同じ作品を:

type 
    TFieldChars = set of Char deprecated; 

これは設計上実現可能であることに注意してください。

私には何が欠けていますか?


これはデルファイのバグ(少なくとも10.1ベルリンと10.2東京)です。

私の受け入れ答えは、きちんとした回避策を提案し、それは次のようになります。

type 
    TArrayCharsOld = array of Char; 
    TArrayChars = TArrayCharsOld deprecated; 

私はエンバカデロにバグレポートを提出します。


これは私が送信したエンバカデロQCの問題です: https://quality.embarcadero.com/browse/RSP-18316

+1

バグレポートを提出する必要があります。 – Johan

+0

@Williamいいえ、それはその質問の重複ではありません。ここではTYPEを非推奨と宣言しています。プロパティは別の話ですが、ドキュメントには触れていません。 – Bozzy

+0

@Bozzyしかし、リンクされた質問の答えは、あなたの問題に使用することができます。 – William

答えて

10

周りに道があります(少なくとも10.1ベルリン)。

type 
    TArrayCharsOld = array of Char; 
    TArrayChars = TArrayCharsOld deprecated; 

コンパイル。

+0

ええ、それはやっぱり狡猾だよ。私はそれをコンパイルしたのを見ましたが、廃止された型が残りのコードで使用されるようにエイリアスを配置するように飛躍しませんでした。よくやった。 –

+0

はい、動作します!実際には、廃止予定のタイプを使用するたびに** ** **同一の警告が表示されます!これは別のバグでしょうか? – Bozzy

+0

はい、2つの警告もあります。 – Dsm

5

言うことはあまり何もありません。動的配列型の宣言は非推奨としてマークすることはできません。

私はこれを欠陥とみなします。 documentationは言う:それは型宣言であるため、

The 'hint' directives platform, deprecated, and library may be appended to any declaration. These directives will produce warnings at compile time. Hint directives can be applied to type declarations, variable declarations, class, interface, and structure declarations, field declarations within classes or records, procedure, function, and method declarations, and unit declarations.

あなたの動的な配列型の宣言は、ここに記載されている要件を満たしています。

+0

これは決して読まれることのない答えのようなものです。私はEmbarcaderoにバグレポートを提出します。 – Bozzy

+1

回避策に関係なく、まだバグレポート –

+1

を提出する必要があります。回避策は解決策ではありません。 – Bozzy

関連する問題