2012-10-22 70 views
0

編譯一個相當大的項目(> 750K線)用Delphi XE3(2009年升級)編譯器內部錯誤升級從2009年德爾福XE3

收到以下錯誤

[dcc32 Fatal Error] MainForm.pas(3170): F2084 Internal Error: URW1147

這個問題類似,然而代碼中沒有任何地方使用泛型。

internal error with generic array

誤差不對應一行代碼,但該文件的,而剛剛結束。

I.e.在「結束」之後。

在谷歌搜索之後,我也嘗試了「代碼內聯控制」的所有設置,但沒有喜悅。

不知道從哪裏開始尋找,並會欣賞任何受過良好教育的反饋(或者甚至是瘋狂的猜測)。

還沒有投入QC報告,希望有用的反饋從這裏。

感謝

+5

絕對不可能幫助沒有代碼。你需要將代碼剝離成一個小例子,產生內部錯誤。不要擔心保持代碼正常工作。只要刪除代碼,直到它編譯沒有內部錯誤。它永遠不需要爲生成測試用例而運行並做任何有意義的事情。 –

+0

謝謝David,製作一個新項目並剝離是我的下一個方法。希望同時有人可能有一個燈泡的時刻。 – Peter

回答

1

曾經通過一次按上述大衛的建議剝開的代碼部分解決了這個問題。

的解決方案是爲如下的情況下,這是有幫助的人......

原來存在的「仿製藥」的代碼,被認爲已被刪除,幾年前和更換使用「遺留」片段更傳統的技術。

有一個沒有重構的局部變量,定義如下。

var 
    TestProc: TProc; 

當按照以下分配時,觸發內部編譯器錯誤(但不通問題的代碼線附近)。

TestProc := TestSuite.TestProcs[i].TestProc; 

上面的數組元素TestProc是對象的類型的程序。

這在2009年編譯(並完美工作),這是它之前沒有拿起,但給XE3下的內部編譯器錯誤。

更正局部變量聲明(對象的過程)可以解決問題。

+2

是否將失敗的來源發佈到QC? –

+1

沒錯。始終提交內部錯誤的QC報告。 –