2016-08-25 11 views
3

コンパイル時にエラー(「メモリ不足」)が表示されることがあります(Delphi IDEに)DPKプロジェクトがあり、成功するとコンパイルされることがあります。 しかし、私はMSBUILDを通してそれをコンパイルしようとすると、それは常に、このエラーメッセージがスローされます。DPKプロジェクトをコンパイルするときのDelphiの内部エラー

error F2084: Internal Error: AV004A784A-WFFFD3764-1

誰かがそれを解決するためのアイデアを持っていますか?

答えて

3

このような内部エラーはコンパイラエラーです。我々はそれらを解決することはできません、コンパイラの開発者だけが行うことができます。バグレポートをEmbarcaderoに提出する必要があります。 XE3の古さを考えると、修正を受け取ることはまずありません。

現代版のDelphiではメモリ不足が発生しにくいため、アップグレードがオプションの場合は、問題が発生する可能性があります。

アップグレードがオプションでない場合は、これらのエラーのいずれかが発生するたびに、混乱して呪われ続ける必要があります。

2

これは実際のところ非常に一般的です(少なくとも私はこの種のエラーを頻繁に経験しました)。私は、コンパイル作業が完了するまで、DPKからソースコードファイルを段階的に削除するというアプローチを採用しました。このようにして、どのファイルがこれらのエラーを引き起こしているかを確認し、問題のある行が見つかるまでこのファイルのソースコード部分を段階的にコメントアウトしてから書き直してください。

2

David Heffernanは既に述べたように、エラーはコンパイラやリンカーの内部にあるため、実際には解決できません。これらの開発者だけがそのバグを取り除くことができます。

しかし、しばしば、いくつかの回避策があります。

私の経験では、このような内部エラーは、ジェネリックメソッドや匿名メソッド、またはインラインコードに関連することがよくあります。

内部エラーが発生する前に行った変更を確認します。バージョン管理システム、またはDelphiの内部_履歴システムを使用する場合は、エラーがなくなるまで以前のバージョンに復元してください。次に、あなたの "怒っている"コードとの違いを行い、内部エラーの原因となったコードを確認することができます。

あまりにも複雑な表現(特に上記のタイプのもの)は、内部エラーの原因となることがあります。そのような場合は、最初に部分式を計算して式を単純化してみてください。また、代わりにあなたが事前に定義されたタイプを使用するようにしてください

x := TList<SomeType<Integer>>.Create; 

のようなアドホックジェネリック宣言使用する:つまり

type 
    SomeTypeInteger = SomeType<Integer>; 
    SometypeList = TList<SomeTypeInteger>; 

    ... 

    x := SometypeList.Create; 

を、

  • は「探してみてくださいあなたがそれを見つけたら
  • になるまであなたの履歴に戻ってコードを単純化してみてください。式を解きほぐすと種類
  • にエラーがあなたがそれを行う場合は、内部エラーの回避に成功したかもしれ離れ

になるまでコードを表現するためのさまざまな方法で実験を事前に定義。それはしばらく時間がかかりましたが、私はいつも私が望むものを達成する方法を見つけました。できなかった場合は、ここで特定のエラーについて質問してください(問題のコードを投稿し、正確なエラーと可能であればMinimal, Complete, and Verifiable example)。

幸いにも、これらのエラーは、最新のコンパイラでは非常にまれです。

関連する問題