2013-12-13 93 views
0

我有一個.BPG項目,它有一個.DPR項目文件的集合。Delphi .PAS代碼在編譯/編譯後恢復到之前的代碼

  1. 打開一個.PAS文件
  2. 我改變了一些代碼行的項目的一個.PAS文件。
  3. 保存它
  4. 更改源代碼後,我試着在該項目上編譯。
  5. 首先它說「編譯」成功。
  6. 現在我看到相同的.PAS文件,所做的更改已丟失。在步驟2中更改的代碼丟失。它只有以前的代碼。

    BUILD的行爲也一樣。 任何人都知道這個問題?

在此先感謝。

更新

還有一個提示:

.DPR項目名稱是XX.dll在IDE中,有一個文件與該項目名稱XX_TLB.PAS。在這個文件中,我試圖改變一些代碼,在編譯/構建後恢復。現在我試圖重命名這個文件,它給了我一個錯誤信息

類型庫必須具有tlb擴展。

也可以.DCU和.PAS文件在同一個目錄中嗎?我進入這個目錄(其中.PAS和.DCU文件都存在)到「Tools-> Options-> Delphi Options-> Library-Win32」下的目錄列表中。

+0

沒有問題。如果編譯更改的文件,則更改不會保存在磁盤上。如果你想保存更改,你應該點擊「保存」。 – kludg

+0

@Ramajayam,你使用的是什麼Delphi版本?當你說'當我看到pas文件'時,在何處/何時是?請準確地描述你採取的步驟(編輯你的問題)。 –

+0

我更新了問題。現在清楚嗎?我對Delphi完全陌生。我使用Borland Developer Studio 2006. Old Borland Project Group(.BPG) –

回答

3

XX_TLB.PAS文件是受保護的文件。不要直接編輯這些文件。事實上,文件頂部有一個註釋,提醒您編輯文件。

每次刷新類型庫時都會重新生成它們。

請參閱Code Generated When You Import Type Library Information

每次編譯/構建您的dll時,都可以通過IDE完成此刷新。


由於類型庫和已註冊com對象的依賴關係,您將永遠不會編輯此文件。您可以通過類型庫編輯器更改com對象本身,也可以創建與您的ActiveX類交互的新單元。

0

Delphi IDE不會撤消更改,因爲一般規則。有一個明顯的例外。當您創建一個空的事件處理程序,然後保存源文件時,IDE將刪除該事件處理程序。也許這就是發生的事情。

我發生的另一種可能性是您有多個文件副本。我知道以下事情發生:

  1. 您創建一個包含Unit1的包。
  2. 您安裝軟件包。
  3. 然後,您製作另一個包含其他Unit1的項目。也許是在不同位置的文件的副本,以便它看起來像同一個單位。
  4. 然後,您修改Unit1的副本,但IDE有時更願意從包中打開該文件。

底線是除了刪除空的事件處理程序之外,IDE不會撤銷您的更改。所以看起來你很可能有多個文件副本。要了解這一點,您需要獲取文件的完整路徑。在IDE中,將鼠標懸停在帶有文件名的選項卡上,IDE將在提示中顯示完整路徑。我懷疑你會發現你有兩個不同的文件。