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

组件技术的本质COM实例分析一

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2735 更新时间:2009/4/23 18:38:00
算法实际上很简单,可以利用循环,也可以利用递归,在此仅仅做简单的分析。我们用循环来处理的话应该需要从后边入手,第十天刚刚吃的还有一个桃子,那么第十天,就应该是四个,第九天是十个,第八天是二十二个……,如此类推,我们可以很容易的得出一共有多少个桃子,可以进行如下的处理:

Var

  Acount : Integer;

  Asum : Integer;

Begin

  Asum := 1;

  For Acount := 10 DownTo 1 do

    Asum := ( Asum + 1 ) * 2;

End;

理解起来很容易,到了第十天吃过之后还剩一个桃子,那么,第十天实际上应该是四个,哪此类推的倒循环回去就可以知道答案。而得用递归将更简单,如下:

Function Cal(Avalue : Integer) : Integer;

Begin

  If Avalue = 11 then

    Result := 1 else

    Result ;= (Cal(Avalue + 1) + 1) * 2;

End;

猴子吃桃,虽然题目相当简单,但或多或少的有些饶人,用循环我们已经很容易的作了出来,接正是来用递归完成这个过程,应为第10天吃完之后还剩1个,相当于到了第11天还有4个桃子,所以我们就可以列出:if DayValue = 11 then Sum = 1 ;递归的过程很简单,只要我们可以把握住它是一个堆的过程,进去了总还是要出来的,而且先进后出;

1.      创建COM服务器

要创建一个COM服务器来实现此算法,而且,这个COM服务器同时还要做用户登录接口。Delphi7为我们提供了很好的创建向导,使得我们不在如在Delphi3下一样,需要手动键入代码,需要说明的一些问题,因为这个应用程序将作成进程内服务,所以首要的前提就是做一个Library,一切操作都应该在这个Library的容器里进行。

新建一个应用程序(File -> New -> Other)选择ActiveX标签,如下图所示:又击ActiveX Library或是选中ActiveX按回车键,Delphi会为我们自动的完成一些工作。

 

当点击“OK”按钮时,如下:

library Project2;

 

uses

  ComServ;

 

exports

  DllGetClassObject,

  DllCanUnloadNow,

  DllRegisterServer,

  DllUnregisterServer;

 

{$R *.RES}

 

begin

end.

这样就创建了一个进行内COM服务器的首要工作,DLL如上边代码所示,Delphi会为我们自动的建立,而DllGetClassObject、DllCanUnloadNow、DllRegisterServer、DllUnregisterServer在前边的章节我们已经详细的介绍过,在些不再阐述。这后请保存这个文件为SrvPro.

在此稍微的做一下分析,为了实现上边的算法,我们需要用到接口来供客户端调用,而现在我们仅仅完成了ActiveX Library库,接下来的工作就是创建正真的COM组件。创建COM组件也很简单,根据相导提示(File-> New -> Other -> ActiveX),如下图

 

在此我们简单的来说一说这个Com Object对话框的具体含义:

Class Name :在此填写类名,Delphi会自动的给我们加上“T”;

Instancing : 在进程内服务,它是没有意义的,因为COM服务器和应用程序在同一个进程里;

Threading Modal:线程模型,线程模型的具体做含意在之前我们已经详细的介绍过,此处将不一再阐述,但是需要知道的是,并非在此设置了某一种线程模型,那么这个服务器就是一个什么样的线程模型,而是在编程过程中来合理的安排。推荐默认的线程模型:Apartment;

点“OK”按钮之后,并将文件保存成AccUnt,会出现入下代码:

unit AccUnt;

 

{$WARN SYMBOL_PLATFORM OFF}

 

interface

 

uses

  Windows, ActiveX, Classes, ComObj;

 

type

  TAccemp = class(TComObject)

上一页  [1] [2] [3] [4]  下一页


没有相关教程
教程录入: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……
    咸宁网络警察报警平台