2010-09-12 116 views
0

我在D2007中使用了德爾福的Bold。該模型相當大,現在我發現模型中有很多方法沒有被調用。編譯器應該給出一個提示,但它很安靜。無參考列表代碼

在Delphi中,鏈接器刪除沒有任何引用的方法。然後在編譯時給出一個提示。我試圖解釋模型中粗體如何使用方法。

一個單位BusinessClasses.pas包括數百個文件是這樣的:

{$INCLUDE BusinessClasses_Interface.inc} 
{$INCLUDE Quantity.inc} 
{$INCLUDE Parcel.inc} 
// and so on... 

文件BusinessClasses_Interface.inc包含此:

TParcel = class(TOrderItem) 
public 
    procedure WayBillAsXML(var aXMLstring: string); 
end; 

然後parcel.inc有實際的方法實現:

procedure TParcel.WayBillAsXML(var aXMLstring: String); 

我想如果我不叫WayBillAsXML那麼我應該得到一個提示從編譯器,但它很安靜。理想情況下,我想要所有未引用的代碼的列表。有沒有辦法?

回答

3

編譯器不會顯示提示,因爲該方法是公共的,所以其他代碼可以調用它。這同樣適用於受保護的方法。另一個(包)單元可以有一個派生自你的類的類,這個派生類可以調用這個方法。
Delphi鏈接器不夠智能,無法識別該方法未在整個項目中調用。它將EXE/DLL文件和BPL文件視爲相同。但只有後者允許其他代碼調用該方法,而它可以刪除EXE/DLL文件的方法。

+0

所以沒有辦法列出所有未使用的方法?順便說一句,我找到了一個手動程序。在調試模式下,只有在使用的方法中才有藍點。但這是檢查這樣一個大項目的非常麻煩的方法。 – 2010-09-13 05:27:00

+1

你可以暫時將它們的可見性改爲私有的,編譯器會抱怨的任何東西,你把它放回受保護的/公共的(無論以前是什麼),那麼任何沒有被編譯器使用的東西都應該暗示。 – 2010-09-13 06:41:48

+0

謝謝,這很聰明!至少它比我在調試模式下的方法更容易一些。但你應該把這個作爲回答而不是評論,否則我不能投票給你。 – 2010-09-13 11:00:41