David Heffernanは既に述べたように、エラーはコンパイラやリンカーの内部にあるため、実際には解決できません。これらの開発者だけがそのバグを取り除くことができます。
しかし、しばしば、いくつかの回避策があります。
私の経験では、このような内部エラーは、ジェネリックメソッドや匿名メソッド、またはインラインコードに関連することがよくあります。
内部エラーが発生する前に行った変更を確認します。バージョン管理システム、またはDelphiの内部_履歴システムを使用する場合は、エラーがなくなるまで以前のバージョンに復元してください。次に、あなたの "怒っている"コードとの違いを行い、内部エラーの原因となったコードを確認することができます。
あまりにも複雑な表現(特に上記のタイプのもの)は、内部エラーの原因となることがあります。そのような場合は、最初に部分式を計算して式を単純化してみてください。また、代わりにあなたが事前に定義されたタイプを使用するようにしてください
x := TList<SomeType<Integer>>.Create;
のようなアドホックジェネリック宣言使用する:つまり
type
SomeTypeInteger = SomeType<Integer>;
SometypeList = TList<SomeTypeInteger>;
...
x := SometypeList.Create;
を、
- は「探してみてくださいあなたがそれを見つけたら
- になるまであなたの履歴に戻ってコードを単純化してみてください。式を解きほぐすと種類
- にエラーがあなたがそれを行う場合は、内部エラーの回避に成功したかもしれ離れ
になるまでコードを表現するためのさまざまな方法で実験を事前に定義。それはしばらく時間がかかりましたが、私はいつも私が望むものを達成する方法を見つけました。できなかった場合は、ここで特定のエラーについて質問してください(問題のコードを投稿し、正確なエラーと可能であればMinimal, Complete, and Verifiable example)。
幸いにも、これらのエラーは、最新のコンパイラでは非常にまれです。