转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
COM程序编写入门(全文-1)         ★★★★

COM程序编写入门(全文-1)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1218 更新时间:2009/4/23 18:34:56

COM程序编写入门

编写:李贤敏

日期:2004-5-2

名词解释:

OLE: (Object linking and embedding对象的链接与嵌入)

       使得服务器模块和客户模块通过标准的接口进行通讯。两个模块可以在同一台计算机或位于不同的计算机上,位置对用户来说是无关紧要的。服务器模块实现了一组接口,客户模块通过这组接口进行通讯。

COM: (Component object modal组件对象模型)

       实现了OLE的功能,具体可完成一下功能:

l        编写供多种语言使用的代码;

多种语言:指的是建立好的COM组件不在乎访问它的编程语言,任何一种编程语言只要知道COM组件的接口,访问是都能完成同样的功能。

l        创建ActiveX控件;

l        通过OLE Automation操纵其他应用程序;

如:Microsoft Excel的OLE编程接口,创建对象后,任何一种程序都可以实现对Excel的操作。

l        与其他计算机上的应用程序通讯;

实际为COM接口与接口之间的通讯,因其实现了不同语言、不同计算机的方式,所以实现不同计算机上应用程序的通讯也就十分容易。

COM模块

COM的模块指独立的应用程序(EXE)或者动态连接库(DLL),在实现COM时,采用DLL方式要比较容易一些。因为:应用程序在加载时在内存中都是独立的地址控件,而DLL加载后可以驻留内存。当多个客户端调用COM时,如果采用EXE形式,就会有多个EXE被加载,而且COM处理客户端的访问时,也必须在不同的地址空间来回切换,大费周张。而DLL形式永远只有一个驻留内存,COM只要在相同的内存空间中寻找执行代码即可。

逐步深入:

DLL我们都已经写了很多,通常我们写的DLL都是定义的一些方法或是过程来实现特定的操作,当然定义的出口(Exports)也就是这些方法或是过程。现在我们来写一个出口为一个类的DLL来展开我们COM编写的学习。

准备工作:

打开Delphi,选择File\New\Others,选择DLL Wizard自动创建一个DLL工程,选择File\New\Unit新建一个单元,全部保存。

写代码:

在新建的Unit中定义一个抽象类:

Type

  TCalculator=Class

    Public

      Function Addition (Op1, Op2: Double): Double ; virtual; abstract;

  End;

这个类很简单,就定义了一个抽象方法实现两个数的相加。

定义抽象类后,定义一个类来实现这个抽象类:

Type

  TCalcImple=Class (TCalculator)

  Public

    Function Addition (Op1, Op2: Double): Double; Override;

  End;

方法实现:

Function TCalcImple.Addition(Op1, Op2: Double): Double;

Begin

  Result: =Op1+Op2;

End;

当然我们还差一个创建这个类的方法,我们在加入如下:

Function CreateCalcImple:TCalcImple;stdcall;

Begin

  Result:=TCalcImple.Create;

End;

定义出口:

Exports CreateCalcImple;

这样我们这个DLL的编写就完成了,我问再来写一个Exe程序来调用它。具体在此就不再操作以便,一些列出Exe的源代码:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

{定义与DLL中定义的抽象类一样的类,类名称可以自定}

Type

  TCalculator=Class

  Public

    Function Addition(Op1,Op2:Double):Double;virtual;abstract;

  End;

type

  TForm1 = class (TForm)

    Button1: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

  &n

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台