Delphi下的COM編程

Delphi下的COM編程

ID:37920276

大小:60.50 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2019-06-02

Delphi下的COM編程_第1頁(yè)
Delphi下的COM編程_第2頁(yè)
Delphi下的COM編程_第3頁(yè)
Delphi下的COM編程_第4頁(yè)
Delphi下的COM編程_第5頁(yè)
資源描述:

《Delphi下的COM編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、Delphi下的COM編程作者:岑心Delphi通過(guò)向?qū)Э梢苑浅Q杆俸头奖愕闹苯咏?shí)現(xiàn)COM對(duì)象的代碼,但是整個(gè)COM實(shí)現(xiàn)的過(guò)程被完全的封裝,甚至沒(méi)有VCL那么結(jié)構(gòu)清晰可見(jiàn)。一個(gè)沒(méi)有C下COM開(kāi)發(fā)經(jīng)驗(yàn)甚至沒(méi)有接觸過(guò)COM開(kāi)發(fā)的Delphi程序員,也能夠很容易的按照教程設(shè)計(jì)一個(gè)接口,但是,恐怕深入一想,連生成的代碼代表何種意義,哪些能夠定制都不清楚。前幾期“DELPHI下的COM編程技術(shù)”一文已經(jīng)初步介紹了COM的一些基本概念,我則想談一些個(gè)人的理解,希望能給對(duì)Delphi下COM編程有疑惑的朋友帶來(lái)幫助。COM(組

2、件對(duì)象模型ComponentObjectModel)是一個(gè)很龐大的體系。簡(jiǎn)單來(lái)說(shuō),COM定義了一組API與一個(gè)二進(jìn)制的標(biāo)準(zhǔn),讓來(lái)自不同平臺(tái)、不同開(kāi)發(fā)語(yǔ)言的獨(dú)立對(duì)象之間進(jìn)行通信。COM對(duì)象只有方法和屬性,并包含一個(gè)或多個(gè)接口。這些接口實(shí)現(xiàn)了COM對(duì)象的功能,通過(guò)調(diào)用注冊(cè)的COM對(duì)象的接口,能夠在不同平臺(tái)間傳遞數(shù)據(jù)。COM光標(biāo)準(zhǔn)和細(xì)節(jié)就可以出幾本大書(shū)。這里避重就輕,僅僅初步的解釋Delphi如何進(jìn)行COM的封裝及實(shí)現(xiàn)。對(duì)于上述COM技術(shù)經(jīng)驗(yàn)不足的Delphi程序開(kāi)發(fā)者來(lái)說(shuō),Delphi通過(guò)模版生成的代碼就像是給你一幅抽象

3、畫(huà)照著畫(huà)一樣,畫(huà)出來(lái)了卻不一定知道畫(huà)的究竟是什么,也不知該如何下手畫(huà),根據(jù)專家觀察,這樣的理論和現(xiàn)象都是值得各位站長(zhǎng)深思的,所以希望大家多做研究學(xué)習(xí),爭(zhēng)取總結(jié)出更多更好的經(jīng)驗(yàn)!自己的東西。本文能夠幫助你解決這類疑惑。再次講解一些概念“DELPHI下的COM編程技術(shù)”一文已經(jīng)介紹了不少COM的概念,比如GUID、CLSID、IID,引用計(jì)數(shù),IUnKnown接口等,下面再補(bǔ)充一些相關(guān)內(nèi)容COM與DCOM、COM、OLE、ActiveX的關(guān)系:DCOM(分布式COM)提供一種網(wǎng)絡(luò)上訪問(wèn)其他機(jī)器的手段,是COM的網(wǎng)絡(luò)化擴(kuò)展

4、,可以遠(yuǎn)程創(chuàng)建及調(diào)用。COM是Microsoft對(duì)COM進(jìn)行了重要的更新后推出的技術(shù),但它不簡(jiǎn)單等于COM的升級(jí),COM是向后兼容的,但在某些程度上具有和COM不同的特性,比如無(wú)狀態(tài)的、事務(wù)控制、安全控制等等。以前的OLE是用來(lái)描述建立在COM體系結(jié)構(gòu)基礎(chǔ)上的一整套技術(shù),現(xiàn)在OLE僅僅是指與對(duì)象連接及嵌入有關(guān)的技術(shù);ActiveX則用來(lái)描述建立在COM基礎(chǔ)上的非COM技術(shù),它的重要內(nèi)容是自動(dòng)化(Automation),自動(dòng)化允許一個(gè)應(yīng)用程序(稱為自動(dòng)化控制器)操縱另一個(gè)應(yīng)用程序或庫(kù)(稱為自動(dòng)化服務(wù)器)的對(duì)象,或者把應(yīng)

5、用程序元素暴露出來(lái)。由此可見(jiàn)COM與以上的幾種技術(shù)的關(guān)系,并且它們都是為了讓對(duì)象能夠跨開(kāi)發(fā)工具跨平臺(tái)甚至跨網(wǎng)絡(luò)的被使用。Delphi下的接口Delphi中的接口概念類似C++中的純虛類,又由于Delphi的類是單繼承模式(C++是多繼承的),即一個(gè)類只能有一個(gè)父類。接口在某種程度上可以實(shí)現(xiàn)多繼承。接口類的聲明與一般類聲明的不同是,它可以象多重繼承那樣,類名=class(接口類1,接口類2…),然后被聲明的接口類則重載繼承類的虛方法,來(lái)實(shí)現(xiàn)接口的功能。以下是IInterface、IUnknown、IDispatch的聲

6、明,大家看出這幾個(gè)重要接口之間是什么樣的聯(lián)系了嗎?任何一個(gè)COM對(duì)象的接口,最終都是從IUnknown繼承的。而Automation對(duì)象,則還要包含IDispatch,后面DCOM部分我們會(huì)看到它的作用。//IInterfaceIInterface=interface//根據(jù)專家觀察,這樣的理論和現(xiàn)象都是值得各位站長(zhǎng)深思的,所以希望大家多做研究學(xué)習(xí),爭(zhēng)取總結(jié)出更多更好的經(jīng)驗(yàn)![''''{00000000-0000-0000-C000-000000000046}'''']functionQueryInterface(c

7、onstIID:TGUID;outObj):HResult;stdcall;function_AddRef:Integer;stdcall;function_Release:Integer;stdcall;end;//IUnknownIUnknown=IInterface;//IDispatchIDispatch=interface(IUnknown)[''''{00020400-0000-0000-C000-000000000046}'''']//IDispatch接口方法定義functionGetTypeInfo

8、Count(outCount:Integer):HResult;stdcall;functionGetTypeInfo(Index,LocaleID:Integer;outTypeInfo):HResult;stdcall;functionGetIDsOfNames(constIID:TGUID;Names:Pointer;NameCount,

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。