2016-09-29 77 views
2

在Delphi 7我在「工具/選項環境/資源庫」在我「Libray路徑」以下目錄:找不到.pas文件,但.dcu在那裏,是不夠的?

C:\ggProgramFiles\QR-synopse-pdf-files 

在那裏我有一些PAS文件及其DCU文件。 這裏的一個文件是QRPDFSynFilt.pas和QRPDFSynFilt.dcu

現在我的問題是,由於pas文件可用,我總是在調試時進入它們,我覺得很煩人。
所以我做了一個新的目錄:

C:\ggProgramFiles\QR-synopse-pdf-files\dcu 

和複製只有DCU文件存在。
然後我改變了'Tools/Environment options/Library'中的路徑來指向這個新目錄。
但現在德爾福7告訴我,他無法找到

C:\ggProgramFiles\QR-synopse-pdf-files\dcu\QRPDFSynFilt.pas 

,這是正確的只有DCU是存在的。
但我始終認爲,當Delphi發現足夠的DCU文件時,如果找到DCU,則不需要PAS文件。

所以我的問題是,德爾福需要PAS文件來編譯,或者是DCU足夠,如果後者是真實的什麼可能會導致德爾福給我這個錯誤?

編輯在Deltics回答

我可以使用編譯器指令{$ debuginfo軟OFF}但由於這些單位屆黨我沒有想對其進行編輯。 如果沒有其他的工作,我仍然會這樣做。在戴維斯評論

編輯: 編譯器錯誤是

[Fatal Error] File not found 'C:\ggProgramFiles\QR-synopse-pdf-files\dcu\QRPDFSynFilt.pas' 
+0

只需在計算機選項中禁用調試,將文件編譯到dcus。然後提供dcus而不是pas文件。如果那是你想要的。我不會這樣做,但這是你的選擇。 –

+0

我看不到任何錯誤說明。你只需要從視線中刪除pas文件。 –

+0

@DavidHeffernan我更新了我從delphi得到的確切錯誤的問題,當我停止編譯器看到pas文件 – GuidoG

回答

4

是的,如果你有dcu那麼這應該足夠了。您的設置中還有其他問題。然而,與其試圖解決這個問題,並且在構建環境中引入並嘗試處理複雜性,我會改爲「修復第一個問題」。

不要試圖欺騙編譯器,只需添加一個{$debuginfo OFF}到的任何pas文件的頂部,你永遠要調試:

{$debuginfo OFF} 

那麼不管在項目的編譯器設置,這些單位將永遠用調試信息編譯,調試器不會進入它們。要重新啓用調試,你可以簡單地添加一個.在指令中{後把它變成一個評論:

{.$debuginfo OFF} // This is now just a comment, not an active directive 

語法高亮將使差異明顯的(假設你有不同的顏色等設置的意見和指示,無論如何這是一個好主意)。

這可能是有意義的把這個指令條件編譯指令,它使您可以啓用或項目條件禁用這些具體的,但相關單位的調試內部:

{$ifdef debugQRPDF} 
    {$debuginfo ON} 
{$else} 
    {$debuginfo OFF} 
{$endif} 

任何在本單位top將不會通過項目編譯器設置啓用或禁用調試,而是通過項目條件。然後,您不必擔心試圖從編譯器「隱藏」pas文件,以避免調試它們。

不要忘記,當更改項目設置(例如條件指令)時,需要進行全重建以使這些更改能夠在構建中正確反映。

+0

我同意別的事情一定是錯的。我知道編譯器指令,但因爲他們是第三方,我不想編輯pas文件,但也許這是我唯一的選擇。我將用這個信息更新我的問題 – GuidoG

+0

你不需要更改你只需要編譯而不需要調試的Pascal文件 –

+0

@DavidHeffernan - 但是然後OP不能調試任何**,包括它們*做的代碼*希望調試。在特定文件中關閉調試(獨立於適用於所有內容的項目設置)的唯一方法是在這些特定文件中引入指令(或在常見的'inc'lude文件中,如果只有那些文件通用的文件你不想調試) – Deltics

2

如果它是第三方組件庫,並且供應商已經提供了源代碼,您可以打開設計時包並重新編譯它,並關閉調試信息。這將創建新的dcus,調試器不會嘗試調試到關聯的.pas文件中。 您可以在項目選項下找到該設置。轉到Delphi編譯器 - >編譯 - >調試 - >調試信息。將設置更改爲OFF。

+0

是的我知道,但它仍然不能解釋爲什麼我不能編譯時,我隱藏pas文件,只讓它看到dcu文件 – GuidoG

+0

僅僅把dcu文件放在另一個目錄是不夠的。必須先關閉調試信息才能重新編譯。 如果pas文件的dcu是從目錄中沒有dcus for的引用another.pas文件編譯的,那麼你需要在編譯時提供.pas文件。 – Tav

4

您可能在項目列表中有該文件。這有效地告訴編譯器你想編譯它。您需要將其從項目中移除,但將引用留在引用它的每個單元的uses子句中。

+0

我確定我檢查了這個,但它是一個好主意,再次檢查。我回到辦公室時會這樣做 – GuidoG

相關問題