2011-01-03 8 views
2

Delphi 2010(XEでも)でジェネリックインターフェイスを定義しようとしましたが(コンパイルしても)、エラーの洞察が構文について不平を言っています。不幸にも、これは実装クラスのコード補完も破ります。私は経由stringに置き換えた場合Delphiジェネリックインターフェイス(文字列タイプ)

TSomeClass = class (TInterfacedObject, IValue <string>, IValue <Integer>) 
protected 
    function GetValue1 : string; 
    procedure SetValue1 (Value : string); 
    function GetValue2 : Integer; 
    procedure SetValue2 (Value : Integer); 
    function IValue <string>.GetValue = GetValue1; //from this point error insight complains 
    procedure IValue <string>.SetValue = SetValue1; 
    (*....*) 
end; 

IValue <T> = interface 
    function GetValue : T; 
    procedure SetValue (Value : T); 
end; 

と実装クラス:

)インターフェースを、だから私はそれがIDEまたは私の思考の誤差の誤差があるかどうか疑問Tstringと定義してください。TString = stringすべてがうまく見えます。任意のアイデアか、それともDelphiのバグですか?

よろしく、

ココ

+0

QC#102293で同様の問題(XE2アップデート3)が報告されました:http://qc.embarcadero.com/wc/qcmain.aspx?d=102293 * IDE修正パックが役に立たなかった –

答えて

2

私が観察したものから、IDE、コンパイラとは異なるパーサを使用しています。コンパイラが問題なく受け入れるエラーとしてフラグを立てることは有名である。ジェネリック医薬品が使われている場合、これは特に当てはまります。一方、各バージョンで改善されているものの、それはまだ間違っていることがあります。いくつかの提案:

  1. 最新の のアップデートがあることを確認してください。
  2. QCレポートを開く(または既存のものに投票する)。これは、2010年よりXEで対処される可能性が高いです。
  3. Andreas Hausladenの非公式のIDE Fix Packを試すことができます。通常、多くのCode Insight修正が含まれています。

また、CnPack IDE Wizardsを試すこともできます。 「コード入力ヘルパー」と呼ばれる機能が含まれています。これは、IDEの組み込みコード補完の代替手段です。多くの場合、Error Insightがエラーを検出しても機能します。

+0

Thx、I XEでも試しました。同じエラー。 CnPackと同様にIDEフィックスパックがインストールされています。ですから、私はembarcaderoのQCを見ていきます...提供されたコードに何か問題があるのは見えませんか? –

+2

あなたのポイント2は読んでください: "これはすでにあなたが支払ったバージョンよりもXE2で対処される可能性が高い" – Deltics

+1

あなたは正しい、Deltics ...これはバグ修正ではない新しい機能のようです;)しかし、Delphiのエラー洞察とコード補完は、エラーの可能性が高く、コード混乱の可能性があります:) –

関連する問題