全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:971
推到 Plurk!
推到 Facebook!

請問寫成 Package 的函式可以被外界呼叫嗎?

缺席
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-18 11:20:50 IP:61.220.xxx.xxx 未訂閱
因為需共用 DataModule ,選擇使用 RunTime Package 方式而非 DLL,也參考李維老師Html文件順利把一些功能獨立寫成 xx.bpl 給別人呼叫。 但我遇到一個問題,就是該 xx.bpl 所寫的 function or procedure 並無法被外界呼叫使用,反而不若 DLL 有此特性好用。(ps: xx.bpl 不顯示 Form 的,所以有此需求) 我是過 A.exe 利用 PostMessage 方式讓 xx.bpl 順利觸發 function/procedure ,但是 A.exe 不會知道 xx.bpl 該 function 何時結束,而是 PostMessage 後自己直接往下繼續執行,這樣有點像 Thread 表現。雖然可以用另外機制判斷 xx.bpl function 是否執行完畢但我覺得仍不是很好做法。 所以我的問題就是,是否可以直接使用 RunTime Package xxx.bpl 的函式且等到該函式執行完畢後,呼叫者 A.exe 才繼續往下執行呢?? 可以做到嗎?? (ps:1.李維老師教學文件上沒有提到此類做法 2.Mastering Delphi 5.0 DLL 相關章節上說可以做到,但沒有 Sample) 請有經驗的人不吝指教,謝謝! JackTasy
------
JackTasy
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-18 12:10:38 IP:147.8.xxx.xxx 未訂閱
Package is in fact custom made dll. You can export function as in dll (not in the .dpk file) and use GetProcAddress to get the address of your exported function.
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-18 12:11:58 IP:61.220.xxx.xxx 未訂閱
經過和他人的討論得到了一個簡單好用的解決方法,提供大家參考。 利用一個特性 A.exe 可以 List 出 xx.bpl 所有元件清單,我把需要執行的函式寫在 Button.OnClick 裡面去呼叫,這樣 A.exe 再去呼叫 xx.bpl.Button1.OnClick 就可以間接達到我的需求,而且經過實驗,A.exe 會等 xx.bpl 該函式處理完畢後,才繼續往下執行。 :> JackTasy
------
JackTasy
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-18 12:17:27 IP:61.220.xxx.xxx 未訂閱
感謝 william 的指教,把 bpl function 也當成 dll 的匯出,這我倒是沒有想到過,不過可能還需要花時間 try,我會先用我已經找到比較簡單的方法來做,還是謝謝 william 的指點!!    
引言: Package is in fact custom made dll. You can export function as in dll (not in the .dpk file) and use GetProcAddress to get the address of your exported function.
JackTasy
------
JackTasy
系統時間:2024-05-15 18:09:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!