2012-04-10 71 views
0

我正在將Delphi 2項目遷移到RAD Studio XE2。F2051單元JclUnitVersioning編譯時使用了不同版本的System.Contnrs.TObjectList.Remove

當我嘗試編譯,我得到

[DCC致命錯誤] MyUnit.pas(9):F2051單位JclUnitVersioning與不同版本的System.Contnrs.TObjectList.Remove

編譯

在下面一行:

unit MyUnit; 

interface 

uses 
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
    StdCtrls, DB, DBTables, TB97, ExtCtrls, Grids, DBGrids, Vcl.Mask, JvExMask, 
    Vcl.DBLookup, 
    JvToolEdit, {<-- error here} 
    TB97Ctls; 

{...} 

我試圖卸載並重新安裝RAD Studio中,JCL和JVCL,但沒有任何變化。

更新正在使用二進制Jedi installer from A.Hausladen(僅適用於Delphi試用版)。

+1

進入'項目/選項'菜單項。在「項目選項」對話框中,檢查您是否在「搜索路徑」部分配置了正確的路徑,並且是否有一些指向您之前的JCL安裝的文件夾,請刪除它們並嘗試重建項目。如果在該部分沒有找到這樣的目錄,請嘗試進入「View/Project Manager」並右鍵單擊項目項目,然後嘗試使用「Clean」和「Build」。 – TLama 2012-04-10 13:40:45

+0

你還有更多的垃圾躺在那,只是卸載和重新安裝沒有清理。卸載不會清除您的Delphi當前用戶的註冊表設置,也不會格式化您的硬盤驅動器,因此有可能在某處存在JCL命名的DCU文件,這些文件正在讓您感到困惑。這裏有更多的「國家」需要解決。看到我的答案。在驅動器中搜索「JclUnitVersioning.dcu」的副本。 – 2012-04-10 14:24:40

回答

1

您可能有舊的DCU文件需要重建或刪除,或者您的項目或庫路徑內容不一致。 (找到名爲JclUnitVersioning.dcu不在正確的JCL庫文件夾中的文件,並刪除它們。正確的庫文件夾命名爲jcl\lib\d7,通過jcl\lib\d16,這取決於你的Delphi版本號)

這通常意味着你的項目訪問包含預編譯的DCU文件的庫路徑(或項目搜索路徑)中的目錄,也可能有權訪問某些源單位(.pas文件),並且依賴於一個或多個單位其他單位,是在與現在不同的時間編制的,具有多個版本的通用單元。我希望我能爲你畫一幅畫。

想象一下,你有一輛車,有人升級引擎,將其從V6更改爲V8。現在有人以前一直在維修您的發動機,然後嘗試找到V6排氣歧管連接的位置。它不再存在,它被移動了。由於新引擎被凍結成現在的形狀(與我在一起!),您的服務技術人員會簡單地告訴您(客戶)並說:「對不起,我很困惑,我不能繼續,我放棄了」。這大致就是這個錯誤信息的含義。

清理它可能有幾種方式;確保您從.pas文件中編譯100%並且根本沒有包含.dcu文件的庫文件夾可能是一件簡單的事情。當然,這並不理想,因爲庫路徑的全部目的是包含預編譯的DCU文件「庫」。我建議你做一個清理(刪除你所有的DCU文件),然後從源代碼重建所有的組件包(你有一個用於該目的的批處理文件?),然後檢查你的項目的搜索路徑,和庫路徑來查看它們都只包含您認爲應該包含的文件夾。

+0

太棒了!我用[這些安裝程序]安裝了JCL和JVCL(http://andy.jgknet.de/blog/2011/11/updated-jcl-and-jvcl-binary-installers-for-xe2-2/),因爲我認爲他們可以解決我遇到的問題,但也許他們在使用不同版本的IDE進行編譯時安裝程序只是複製DCU而無需使用IDE編譯源代碼。非常感謝! – bluish 2012-04-10 15:35:27

+2

二進制安裝程序僅適用於Delphi的TRIAL版本的用戶。 (它在你發佈的鏈接上說得很清楚!)很高興你解決了它。但是如果將來你使用了一個奇怪的安裝程序,請注意在這個問題中,或者我們假設你使用了常規安裝程序。 – 2012-04-10 17:26:55

1

剛剛有與Delphi 2010和XE3相同的問題(都在同一臺PC上遷移時)。

經過幾個小時的重新編譯我的項目和JCL項目(​​PC上的安裝程序bat文件錯誤)發現問題是在tools/options/Delphi Options/libraries中聲明目錄的順序。

把它們全部拿出來,添加特定版本的目錄(例如lib \ D14,lib \ D17 \ Win32),然後需要其他JCL子目錄(即一次一個,直到使用JCL的項目建立)

相關問題