請問如何取代聯結dll檔中的事件方法 |
缺席
|
gui0710
一般會員 發表:1 回覆:0 積分:0 註冊:2009-05-12 發送簡訊給我 |
因工作上的需求,需要使用廠商所開發的DLL檔,不過剛學習delphi語言不久,還是有些問題想向各位前輩請教
小弟所使用的工具是Delphi 2009, 透過Component ->Import Component 功能產生一個DLL_TLB檔案 於TLB檔中(其中包含許多Class)可以看到所需要產生實例的類(Class) Scanning 有三個 interface,分別宣告為 IScanning = interface(IDispatch) IScanningDisp = dispinterface _IscanningEvent = dispinterface 從書本與網路上找尋相關於介面的資料,雖然知道宣告定義的方法,但是對於介面還是有點不了解,從書中看到的資訊說到 如果物件所屬的類別實作為 IDispatch介面型態的內容,這個物件就稱為一個automaion物件,但是又說在程式執行時,實際上都轉到 IDispatch介面的 Invoke方法來負責執行,類別型態沒有辦法實作出 Dispatch相關型態的內容(參考至Borland Delphi4 Object Pascal 程式語言手冊) 書上也有說明到雙重介面(Dual Interface),這就找不到比較完整的資料 這邊完全弄不懂,是否可以請諸位前輩幫忙講解下這部份的關念,或是有什麼相關的範例,書與資料可以查詢? 然後,當我在程式中 Create了 Scanning後,我沒有辦法去呼叫_IscanningEvent中的任何一個事件,也無法產生實例,是否這需要透過什麼特別的方式才能達到事件的呼叫? 最後是 _IscanningEvent其中的一些事件方法,我需要用自己所寫的方法去取代原有的事件方法,有想過用傳遞自己定義的事件方法進入點指標,但是查詢網路上的資料卻沒發現相關的範例 難到 Delphi 不能夠使用指標指定的方式去變更事件方法的指標位址嗎?或是有其他的方式可以直接取代原來的事件方法? 也有試過用繼承的方式去實作物件,但是卻發現到需要宣告出所有這物件底下的方法與實作,我只需要取代部份事件方法,是我的做法錯誤呢?還是繼承本來就不能夠放棄部份不要? 請各位前輩幫忙一下我這個新手,或是提供我學習的方向,在此小弟先向大家說聲謝謝,不管怎樣也看完了這一大串,謝謝 如果還需要什麼資料的,我會在補充上來,謝謝大家
------
新手上路期間,前後左右請保持距離以免發生擦撞 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |