Package 的疑問? |
尚未結案
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
研究了好幾天 Delphi 的 Package 的用法,還是疑雲重重,找了站上的文章看,總覺得語焉不詳,特此與大家分享我的疑雲,不知是否有那位大大能解我疑雲
背景:
1.一支主程式,執行時會自己比對 FTP 伺服端的 BPL 檔案,如有新版則自動下載新的 BPL
2.主程式下載完新檔案後,要去 Call Package1.bpl 裡的方法,執行某一段程式
3.Package1.bpl 又會去 Call Package2 裡的方法,打開某個 form 觀念:
1.如果將主程式專案裡的 Project->option->package 裡的 Builder with runtime packages 裡打勾,如果把 package1.bpl及 package2.bpl 列在裡面,就是靜態載入,否則就是動態載入
2. 在 package1.bpl 裡的 requires 裡如果有 package2.bpl 就是靜態載入 否則就要動態載入
問題來了:
1. 靜態載入與動態載入 是否只差別在前者不用 LoadPackage 就可使用 PACKAGE 裡的物件或變數,動態載入 一定要用 LoadPackage 載入,問題是所謂的靜態載入 是什麼意思?是否除了程式在編譯時需找的到 .BPL 外,也意謂著靜態載入的程式碼,會在主程式編譯時就已連結進主程式,往後如果只是單純的更改
BPL,主程式依然不會受影響
1.動態載入的二個 PACKAGE 如何互相參考對方的物件及方法,是否只能有如下的做法
LoadPackage('Package2.bpl');
cs1 := GetClass('TListAppsOnWindows');
if cs1<>nil then
begin
Application.CreateForm(TComponentClass(cs1), fm1);
fm1.sHOW;
end;
我如果在 TListAppsOnWindows 裡有一個自訂的方法,如 HTTPGETDATA;
我該如何 CALL 到,是否要在 USES 裡加上該 UNIT,但這樣會不會變成靜態連 結,PACKAGE 配合自動更新的功能,確實能為系統帶來無比的更利性,但如像說明資料不多,反而造成困擾
不知有那位大大知道以上這些問題
謝謝
如果愛情也有味覺
那麼 有沒有ㄧ種愛
微微泛酸 不太苦澀 有點甜密
嚐起來的滋味讓人想起幸福
Thomas Chiou
------
Thomas Chiou |
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
沒錯!!
1.所謂靜態載入,就是把*.bpl的程式碼鏈結到主程式中,所以相對的
主程式會變得很大(這也是我們之所以要選擇動態載入的原因之一)
除非你重新Compiler主程式,否則主程式不受已經更版的BPL的影響!! 2.至於"動態載入的二個 PACKAGE 如何互相參考對方的物件及方法"
個人視覺得你要把兩個Package相依性高的功能另行拆解,因為使用
動態載入著重的就是將每一個Package都當成為一個獨立模組,採取
相依性太高的設計,反而失去了Package的優勢,不如就使用靜態載入
來的好!! 努力不一定成功 , 不努力一定不成功!!
|
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
沒錯!!
1.所謂靜態載入,就是把*.bpl的程式碼鏈結到主程式中,所以相對的
主程式會變得很大(這也是我們之所以要選擇動態載入的原因之一)
除非你重新Compiler主程式,否則主程式不受已經更版的BPL的影響!! 2.至於"動態載入的二個 PACKAGE 如何互相參考對方的物件及方法"
個人是覺得你要把兩個Package相依性高的功能另行拆解,因為使用
動態載入著重的就是將每一個Package都當成為一個獨立模組,採取
相依性太高的設計,反而失去了Package的優勢,不如就使用靜態載入
來的好!! 努力不一定成功 , 不努力一定不成功!!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |