建设门户网站人均ip1000需要多大数据库,外贸网站建设注意什么,在网上做效果图赚钱的网站,网络营销推广方法餐饮元旦闲来无事,学习一下DELPHI怎样编写COM组件.结果一试才发现问题多多,要么是找不到接口,要么是找不到方法.查了很多资料,发现说的都不清楚.现在把我所学到的和大家分享一下,希望新学的人能少走弯路. 1、什么是COM COM是微软定的一种组件编写的规范,目的是为了实现组件的重用,不… 元旦闲来无事,学习一下DELPHI怎样编写COM组件.结果一试才发现问题多多,要么是找不到接口,要么是找不到方法.查了很多资料,发现说的都不清楚.现在把我所学到的和大家分享一下,希望新学的人能少走弯路. 1、什么是COM COM是微软定的一种组件编写的规范,目的是为了实现组件的重用,不管你是用C、DELPHI、VB什么语言写的只要遵守这种规范就是COM组件就能相互之间调用。那这个规范是什么呢最简单的就是按规定使用接口微软定了个IUnkown接口只要实现了这个接口的类就可以称为COM组件。在此基础上可以加上自己的接口实现特定的功能这就成了有用的COM组件了。 2、DELPHI中如何创建COM组件 两个步骤 1创建一个ActiveX Library,这是个DLL 2创建一个COM Object或者Automation Object二者选其一这两者都是COM组件但是当然还是有区别的差在调用的方法上这个后面再说 3、DELPHI中如何调用COM组件 两种方法分别是用接口来调和用名称来调第一种适用于支持接口的语言如C、DELPHIVB就不行了好处是速度快因为不用根据名称去查找了还有开发时编译器能检查缺点是要导入类型库。第二种适用于所有的语言好处是不用导入类型了缺点是调用的速度慢还有开发时编译器不检查。 前面说的COM Object只能通过第一种方法调Automation Object两种方法都可以调。举例如下 我创建了一个ActiveX Library名叫mylib。一个Automation Object名叫myobj。并且编译注册过了。 用第一种方法调用时需要如下操作在use里加上mylib_TLB类型库如果不是自己开发的没有TLB可以从DLL导入生成的代码是var myobj:Imyobj;myobjComyobj.create();之后就可以用了。如果有兴趣可以看看类型库的代码里Comyobj.create里调用了CreateComObject这函数返回的是IUnkown接口再用as操作转成你需要的Imyobj接口。 用第二种方法不需要类型库了代码是var myobj:variant;myobjCreateOleObject(mylib.myobj);之后就可以用了这个方便吧。其实为了实现用名字调用需要加上IDispatch接口不过delphi都自动给我们加好了不用管直接用就行。