Delphi面向对象 COM [转载]Delphi面向对象学习随笔七:COM
来源:互联网 发布:电子称软件 编辑:程序博客网 时间:2024/05/22 05:07
Delphi面向对象学习随笔七:COM 作者:巴哈姆特 http://www.cnpack.org (转载请注明出处并保持完整) 上一篇,我们介绍了接口。如果没有接触过COM对象的话,你会觉得接口真的很麻烦,也许会有:“还不如直接定义一个类更方便”的想法。 COM是个二进制规范,它与实现的语言无关。这样,即使COM对象由不同的编程语言创建,运行在不同的进程空间和不同的操作系统平台,这些对象也 能相互通信。COM既是规范,也是实现,它以COM库的形式提供了访问COM对象核心功能的标准接口以及一组API函数,这些API函数用于创建和管理 COM对象。COM本质上仍然是客户服务器模式。客户(通常是应用程序)请求创建COM对象并通过COM对象的接口操纵COM对象。服务器根据客户的请求 创建并管理COM对象。当然,客户和服务器这两种角色并不是绝对的。 记得我在刚刚接触COM对象的时候,我师傅曾经给我说过:“COM不是Dll,虽然它可能会以后缀名为dll文件呈现在你面前,但是它绝对不是我们传统意义上所说的dll(动态链接库)”。 现在,我们演示怎么在Delphi中利用向导建立一个简单的COM模型。 library Project1; uses exports {$R *.RES} begin 我们会看到,在工程中,Delphi已经帮我们定义好了四个输出函数(关于这几个函数更详细的说明,可以查阅更多的资料),我们先不管它们。 unit Unit1; {$WARN SYMBOL_PLATFORM OFF} interface uses type implementation uses ComServ; function TNewComServer.GetMessage: HResult; initialization 之后,我们编译这个工程(CTRL+F9)将会生成一个Project1.dll文件。保存并关闭这个工程。 var // 注意,在测试代码中也需要引用project1_tlb单元,由于我们的接口声明在该单元内 if NewComObject <> nil then 注意我们在运行这个EXE之前,需要先把我们之前的COM工程注册给系统:开始->运行->regsvr32.exe /"...Project1.dll/"。看到注册成功的提示信息后,我们现在可以运行我们刚刚编写的那个测试程序来测试我们的COM对象了,看看执行测 试代码后,是否弹出了一个标题为“提示”,内容为“测试”的对话框呢? 我们可以看到,在COM组件创建好以后,在EXE调用的时候是相当简单的,而且,当我们某个方法的实现细节发生改动,只要方法声明不变,那么在软件升级的时候,我们可以只升级我们需要升级的COM组件,而不需要改动其它的地方。这样可以有效的减轻维护的工作量。 当然,这个演示只是一个进程内的COM,至于更详细的说明,可以去参阅更多的资料。 友情提示:ActiveX是Windows下实现COM的一个组件规范。请不要把ActiveX和COM之间划上等号! |
- Delphi面向对象 COM [转载]Delphi面向对象学习随笔七:COM
- Delphi面向对象学习随笔七:COM
- Delphi面向对象学习随笔七:COM
- Delphi面向对象学习随笔七:COM
- Delphi面向对象学习随笔七:COM(转)
- Delphi 接口 [转载]Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔九:后记
- Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔九:后记
- Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔六:接口
- Delphi面向对象学习随笔二:编写第一个类
- Delphi面向对象学习随笔三:overload与override
- Delphi面向对象学习随笔四:继承与封装
- Delphi面向对象学习随笔五:一个真正的类
- shu
- response.write损坏css导致TextBox放大或缩小
- 得到相同的记录
- 半透明的实现
- UTF-8编码问题
- Delphi面向对象 COM [转载]Delphi面向对象学习随笔七:COM
- 关于学好J2SE有啥用的个人理解
- stl学习网站
- IBM总结出五项SOA最佳实践
- Oracle安装新体会
- jQuery入门指南教程
- gdb 常用的调试命令
- C#按位运算的类型转换的问题
- 给你的网站加个"加速器"吧