2009-07-30 12 views
1

リリースモードでアプリケーションをビルドすると、ファイルの最後に内部エラーURW1135が発生します。私は、インターネットを検索し、それはとても内部エラーURW1135

MyClass <T> = class 
    FArray : array of T; 
end; 

のようなジェネリック型の配列については、私は私のコードベース全体で提案回避策(Tの型TArrayType =配列を宣言)を適用することができること(here)を発見しました。

しかし、残念ながらエラーはまだあります。何が間違っている可能性がありますか?

驚いたことに、デバッグモードではすべて正常に動作します。

ありがとうございます。

答えて

4

D2009コンパイラには、Update 3が複数の問題を修正した後も、Generics関連のさまざまな問題がまだいくつかあります。残っているもののほとんどはコンパイラの致命的なエラーを生成し、URW 1135は最も一般的なエラーの1つです。その解決策がうまくいかなかった場合は、他のものを探してください。

コンパイラは、特殊なジェネリッククラスを1か所で宣言し、他の場所で使用するのが最も難しいです。例えば、1つのユニットに:別のユニットで

type 
    TMyList = TObjectList<TMyClass>; 

var 
    myList: TMyList; 

これは、またはほとんど乱数神々の気まぐれに基づいて、コンパイラエラーが発生しない場合があります。

私はできるだけ多くのバグを特定して報告するよう努めてきましたが、リリースモードでしか現れていないことはまだありません。これを特定のオカレンスにトレースすることができれば、それを修正できるようにQCに報告してください。うまくいけば、Delphi 2010はジェネリックスの問題から解放されます。

+0

ジェネリックスでクラス内のプロシージャをオーバーライドすると、同じエラーが発生しました。親のプロシージャをオーバーライドしないようにコードを変更しなければなりませんでしたが、親のプロシージャをdifferenteパラメータで複製し、ジェネリックのクラスで呼び出すようにしました。私が望んでいたものではなく、私の問題を解決しました。 – Alisson

1

プロジェクトオプションではCode inlining controlの設定です。 の場合はに設定すれば、ジェネリックでうまくいきません。私のリリースビルドでまたはオフに設定すると、内部エラーなしでコンパイルできました。

+0

これは私の場合にも当てはまりました。確かに。 –

関連する問題