Delphi COM编程技术三类型库

       在COM组件的使用和开发过程中经常需要获取有关组件的信息。而COM组件以二进制代码的形式发布,如果不借助特定的工具这些相关信息将难以被获取。通过访问类型库就可以查看COM组件的信息。

一、类型库的基础知识介绍:

1、类型库的定义:

类型库:在类型库中以二进制的形式描述了一个或多个对象的类型信息。具体的类型信息包括:组件的CLSID、所支持接口的IID、接口的成员函数及其参数和返回值类型等。

TTypedComObject类: TTypedComObject类及其派生类提供了对类型库的支持。COM由TTypedComObject派生,而不是TComObjectFactory.Create;初始时,delphi调用了TTypedComObjectFactory.create、而不是TComObjectFactory.Create;(Delphi自动创建XXXX_TLB.pas文件;)

2、查看类型库的信息

    在组件程序中,会专门创建一个类型库文件(tlb后缀名),此类型库文件定义和实现了组件向外所提供的接口、属性、方法和事件。Delphi专门为这个文件提供 了一个Pascal版本的文件(tlb扩展名),而且自动维护这两个文件的一致性。类型库的创建是根据.tlb文件中的描述进行编译的。Tlb文件包括Attributes、Uses、Flags、Text。Text文件下面给出一段文件描述:通过coclass关键字定义了对象类型信息,将据此建立相应的包装类。library关键字描述了当前库信息,并可通过importlib关键字引入其他的类型库。

[

  uuid(B8DF2272-9F93-454E-9A95-60E32179C925),

  version(1.0),

  helpstring("ProjectDCOM Library")

   

]

library ProjectDCOM  // 描述了当前库信息,

{

 

  importlib("stdole2.tlb"); // 引入其他的类型库

  importlib("midas.dll");

  importlib("stdvcl40.dll");

 

  [

    uuid(E30249CE-0CAB-4841-ADE4-83C5F26E52C7),

    version(1.0),

    helpstring("Dispatch interface for EnterAssist Object"),

    dual,

    oleautomation

  ]

   interface IEnterAssist: IAppServer

  {

  };

 

  [

    uuid(19CEE64A-4F7E-4626-AD07-FDCB6260C96F),

    version(1.0),

    helpstring("EnterAssist Object")

  ]

  coclass EnterAssist  // 定义了对象类型信息, EnterAssist自己定义的名称

  {

    [default] interface IEnterAssist;

  };

 

};


3、使用类型库的好处:

1>、编写自动化控制时早期连接(Early Binding);

2>、可以根据类型库中的描述信息建立相应的包装类。通过此包装类将能很方便的在客户程序中使用组件对象提供的属性和方法。

3>、实用程序可以用来读取并显示有关包含类型库的COM服务器的信息,在COM客户和服务器之间自动参数调度;

4>、类型库对某些COM服务器是必须的,例如:自动化服务器和ActiveX控件;

 

二、类型库操作:

1、类型库中添加接口、属性、方法和事件

1>、第一种方法:打开实现文件,选择【Edit】菜单里的【Add To Interface】命令(注意:只有打开了实现文件,这个命令才能使用),Delphi将弹出增加接口对话框。在对话框里的Interface项选择Properties/Methods-IStringGridX,然后在Declaration里写入t属性的声明(如果你选中了对话框里的Syntax Helper选项,Delphi将随时提示你应该输入的内容); 点击OK后,这个属性的相关信息将自动加入到控件的实现文件、类型库文件和对应的Pascal文件中。因为控件的接口是双向的,所以在Pascal文件里使用了读和写两个方法来实现控件的属性。
2>、第二种方法:使用类型库文件中的工具条:可以添加接口、方法、以及属性到COM服务器中;
注意:工具条上可以通过点击鼠标右键弹出的菜单中选择Text Labels命令打开工具条的标题;

 

2、类型库文件中的工具栏:
1>、Interface(接口): 自动为每一个新建的接口产生一个GUID;
2>、Dispinterface(派遣接口): 与接口类似,但是使用不同的派遣机制调用服务器中的方法;
3>、CoClass(): 类别的定义,被指定给实现接口的COM对象;使用COM对象之前必须先使用一种方法从类别定义建立真正的类别对象(变量); 再从类别对象取去需要的接口;最后再从取得的接口中调用需要执行的方法或需要存取的属性;
4>、Enumeration(枚举): 与枚举类型类似;有整数ID来指明,而不是通过集合类型;
5>、Constant(常量):只有在枚举下才有用;可以编辑Name、Value属性;
6>、Alias(别名): 用于定义用户要包括一条记录类型(record)或联合类型(union)中的类型;
7>、Record(记录类型): 记录结构;
8>、Union(联合类型): 等同于Pascal Variant类型;
9>、Module(模块): 模块是方法和常量的集合;
10>、Method(方法): 输入参数(in)、输出参数(out)、可变参数(var);
11>、Property(属性): 只读、只写、读写三种;
12>、Refresh(更新): 使Delphi更新源文件;
13>、Register(注册): 编译COM服务器并把服务器注册到Windows中;
14>、Export(输出到IDL): 在MIDL或Corba格式中很有用;

3、类型库文件中的对象列表和页控件:

对象列表(Object List):显示服务器中定义的接口、方法等,点击会显示相应的情况,然后还可以添加以下东西;
页控件(Page control):显示对象列表中当前选中的接点的类型信息。包括Attributes、Uses、Flags、Text;
类型库也是一种资源;
不必在客户应用程序中直接读取类型库;

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi6是一种集成式开发环境,其中包含了强大的网络编程功能。通过使用Delphi6,我们可以轻松地编写网络应用程序,实现网络通信、数据传输和远程访问等功能。 在Delphi6中,网络编程可以通过多种方式实现,其中一种常用的方式是使用TCP/IP协议进行网络通信。Delphi6提供了完善的TCP/IP编程,可以轻松地创建客户端和服务器应用程序。通过TCP/IP协议,我们可以实现可靠的数据传输,并且支持跨平台通信。 在Delphi6中进行网络编程,我们可以使用Socket组件,它是一个封装了底层Socket API的高级组件。通过Socket组件,我们可以方便地创建Socket连接,发送和接收数据。同时,Delphi6还提供了一些辅助组件,如ServerSocket和ClientSocket,用于快速创建服务器和客户端应用程序。 除了TCP/IP之外,Delphi6还支持其他网络协议,如UDP、HTTP等。通过使用这些协议,我们可以实现不同类型的网络应用程序。例如,通过UDP协议,我们可以实现实时音视频传输;通过HTTP协议,我们可以实现Web服务的调用和数据获取。 在深入学习Delphi6网络编程时,我们需要掌握网络编程的基本原理和相关技术。了解TCP/IP协议、Socket编程和网络安全等知识是必不可少的。此外,我们还可以通过学习Delphi6网络编程的相关案例和实践经验,加深对网络编程的理解和实践能力。 总之,Delphi6是一个功能强大的集成式开发环境,它提供了丰富的网络编程功能,并支持多种网络协议。通过深入学习Delphi6网络编程,我们可以轻松地创建各种网络应用程序,提供高效、可靠的网络通信和数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值