国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

DELPHI中如何編寫COM組件

元旦閑來(lái)無(wú)事,學(xué)習(xí)一下DELPHI怎樣編寫COM組件。結(jié)果一試才發(fā)現(xiàn)問(wèn)題多多,要么是找不到接口,要么是找不到方法。查了很多資料,發(fā)現(xiàn)說(shuō)的都不清楚?,F(xiàn)在把我所學(xué)到的和大家分享一下,希望新學(xué)的人能少走彎路

元旦閑來(lái)無(wú)事,學(xué)習(xí)一下DELPHI怎樣編寫COM組件。結(jié)果一試才發(fā)現(xiàn)問(wèn)題多多,要么是找不到接口,要么是找不到方法。查了很多資料,發(fā)現(xiàn)說(shuō)的都不清楚。現(xiàn)在把我所學(xué)到的和大家分享一下,希望新學(xué)的人能少走彎路。

什么是COM

COM是微軟定的一種組件編寫的規(guī)范,目的是為了實(shí)現(xiàn)組件的重用,不管你是用C、DELPHI、VB什么語(yǔ)言寫的,只要遵守這種規(guī)范就是COM組件,就能相互之間調(diào)用。那這個(gè)規(guī)范是什么呢,最簡(jiǎn)單的,就是按規(guī)定使用接口,微軟定了個(gè)IUnkown接口,只要實(shí)現(xiàn)了這個(gè)接口的類,就可以稱為COM組件。在此基礎(chǔ)上可以加上自己的接口,實(shí)現(xiàn)特定的功能,這就成了有用的COM組件了。

DELPHI中如何創(chuàng)建COM組件

兩個(gè)步驟:

(1)創(chuàng)建一個(gè)ActiveX Library,這是個(gè)DLL。

(2)創(chuàng)建一個(gè)COM Object或者Automation Object,二者選其一,這兩者都是COM組件,但是當(dāng)然還是有區(qū)別的,差在調(diào)用的方法上,這個(gè)后面再說(shuō)。

DELPHI中如何調(diào)用COM組件

兩種方法,分別是用接口來(lái)調(diào)和用名稱來(lái)調(diào),第一種適用于支持接口的語(yǔ)言,如C、DELPHI,VB就不行了,好處是速度快,因?yàn)椴挥酶鶕?jù)名稱去查找了,還有開(kāi)發(fā)時(shí)編譯器能檢查,缺點(diǎn)是要導(dǎo)入類型庫(kù)。第二種適用于所有的語(yǔ)言,好處是不用導(dǎo)入類型了,缺點(diǎn)是調(diào)用的速度慢,還有開(kāi)發(fā)時(shí)編譯器不檢查。

前面說(shuō)的COM Object只能通過(guò)第一種方法調(diào),Automation Object兩種方法都可以調(diào)。舉例如下:

我創(chuàng)建了一個(gè)ActiveX Library,名叫mylib。一個(gè)Automation Object,名叫myobj。并且編譯注冊(cè)過(guò)了。

用第一種方法調(diào)用時(shí),需要如下操作:在use里加上mylib_TLB類型庫(kù)(如果不是自己開(kāi)發(fā)的沒(méi)有TLB可以從DLL導(dǎo)入生成的),代碼是var myobj:Imyobj; myobj:;之后就可以用了。如果有興趣可以看看類型庫(kù)的代碼里,里調(diào)用了CreateComObject,這函數(shù)返回的是IUnkown接口,再用as操作轉(zhuǎn)成你需要的Imyobj接口。

用第二種方法不需要類型庫(kù)了,代碼是var myobj:variant; myobj:CreateOleObject('');之后就可以用了,這個(gè)方便吧。其實(shí)為了實(shí)現(xiàn)用名字調(diào)用,需要加上IDispatch接口,不過(guò)delphi都自動(dòng)給我們加好了,不用管直接用就行。

標(biāo)簽: