最近做公司專案。模塊化的程式,我們負責各個模塊的功能實作,是寫成DLL然后給主程式用的。
在我做的DLL里面用到了一個函式Biz2Packer.BeginPack;我找不到他的實作的地方,代碼如下:
// 呼叫beginpack打包
Biz2Packer.BeginPack;
//Biz2Packer.BeginPack;的宣告代碼
TBizPacker = class(TObject)
public
procedure BeginPack; virtual; abstract;
..//其他屬性和方法省略
end;
到這里,小弟就再也找不到BeginPack的實作地方了。按道理,TBizPacker 這個抽象類的方法應該是在TBizPacker 的子類中實作的,可是當我在工程中卻找不到有子類從TBizPacker 類中繼承。
由于這里是在DLL的工程中完成的,主程式的代碼我看不見,所以小弟有幾個猜想。
1、BeginPack的實作是在主程式中完成的。(求告知這種寫法是否合法,如果合法,要怎么用。。。)
2、BeginPack是其他DLL或bpl中的方法。但是我在代碼中沒有看到任何靜態或動態呼叫DLL的地方。如果是bpl中的方法,求大神告知,這種指定的寫法。
uj5u.com熱心網友回復:
也沒有使用BeginPack;的地方?uj5u.com熱心網友回復:
@DelphiGuy 有啊,第一句就是呼叫。uj5u.com熱心網友回復:
還是根本沒寫完TBizPacker 目前只停留在抽象階段?
要看它實際的用處才知道要不要編寫一個子類實作
同一個TBizPacker 定義應該不會出現在多個分割的子案裡
除非不同子案間有先約定 TBizPacker 的定義檔案不可以改
不然這樣互相的依賴性太高
uj5u.com熱心網友回復:
既然有呼叫,那肯定有子類的實作,或者class helper的實作,在IDE中按住ctrl鍵,滑鼠指標指向該方法就會出現鏈接,點進去看看實作在哪里。uj5u.com熱心網友回復:
已經實作過了,在整個工程中都找不到實作的地方。
uj5u.com熱心網友回復:
我在呼叫BeginPack的地方按CTRL+左鍵,直接跳轉到procedure BeginPack; virtual; abstract;
沒有發現任何TBizPacker的子類實作了BeginPack方法。
會不會是在主程式的代碼中實作的,我這個DLL根本看不到?
uj5u.com熱心網友回復:
DLL可以正常編譯,加到主程式也能正常運行。問題是現在找不到實作BeginPack的代碼。。。
uj5u.com熱心網友回復:
那你打開除錯資訊,把專案build一下,然后在呼叫BeginPack的地方下個斷點,運行,跟蹤進去看看。uj5u.com熱心網友回復:
感覺是個介面,實作封裝在另一個dll里面uj5u.com熱心網友回復:
很可能是Dcu 或者 Bpl轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71382.html
標籤:VCL組件開發及應用
上一篇:.net呼叫delphi 的DLL使用ADO 連接oracle出錯 是怎么了,但是delphi調就沒問題。 這個詭異的問題有人知道嗎?
