2014-11-23 20 views
0

我繼承了一些Delphi 7代碼,我試圖遷移到Delphi 2010. 我已經完成了必要的所有表單和代碼更新,但當我嘗試運行時,我會在上面的標題中看到消息。 我有4個訪問數據庫文件,由程序查詢。我已經在MS Access 2013中打開了它們,它們都看起來不錯。 有趣的是,當我創建一個新項目並添加相同的ADO組件時,網格中顯示的數據就很好。 我嘗試了與F2051錯誤相關的論壇上列出的各種選項,但無濟於事。 有人可以建議我可能會出錯的地方。 明亮的想法。F2051單元ADODB編譯時使用了不同版本的ADOInt._Command

託尼

+0

當你自己編譯embarcadero單元時會出現這種情況 – 2014-11-23 23:14:29

回答

3

檢查項目源(DPR)和/或遷移的應用程序項目的設置。

您可能會在uses列表中找到引用通常是VCL/RTL組成部分的ADO單元的明確條目。

或者,您可能會發現相關的ADO * .pas文件已放置在與DPR文件本身相同的位置。

或者,您可以在項目搜索路徑中引用的位置找到這些單位。

無論哪種方式,問題很可能是由於舊項目從VCL源代碼中取得單元並將它們放置在項目特定位置以便允許對這些單元進行更改。這是一種用於修復VCL單元中的錯誤的技術,只要單元的接口未被修改,並且/或者所有從屬單元被類似地重新編譯,這些技術就可以工作。

單元的interface部分確定其他單元如何鏈接到它,並且如果更改該接口,則與其他單元的鏈接將中斷。如果這些其他單元可以重新編譯,那麼這是解決的,但在VCL單元的情況下,它通常會導致這些問題,因爲其他單元通常是而不是重新編譯。

一旦確定了項目中涉及的已更改的VCL單元,就應該將更改的版本與隨後編譯器(Delphi 2010)提供的版本進行比較。您可能會發現,Delphi 7項目中的更改是修復現在在標準VCL版本的單元中修復的錯誤,在這種情況下,您可以從項目中刪除修改的ADO VCL單元,並簡單地使用VCL版本。或者,您可能會發現Delphi 7單元中所做的更改需要移植到Delphi 2010版本中,在這種情況下,您應該複製允許在Delphi 2010項目中重新編譯相關單元的項目組織使用德爾福2010個單位,然後合併從德爾福7版本將更改那些德爾福2010單位:

Delphi 7 original.pas   Delphi 2010 original.pas 

    ^         \ 
    diff --------------------------------> port 
     v          _\| 

Delphi 7 modified.pas     Delphi 2010 modified.pas 

注意,如果德爾福2010原始版本來自德爾福7原有的不同,那麼你一定要小心端口您的項目所需的那些更改,而不會撤消其他修補程序,也不會影響修改後的單元的interface

+0

Thanks Deltics,'你可能會發現相關的ADO * .pas文件已經放在與DPR文件本身相同的位置',原來是這個問題。刪除它們讓我繼續。現在我只需要繼續解決與遷移有關的所有其他不一致問題。最好的問候,託尼 – Swagman9203 2014-11-26 01:34:40

相關問題