打印本文 打印本文 关闭窗口 关闭窗口
Delphi背后---初学者参考之二(2)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1577  更新时间:2009/4/23 18:35:06  文章录入:mintao  责任编辑:mintao
COM是Microsoft以前极力推崇的东西,所以在Windows操作系统中无处不在,同样Delphi的VCL也有调用Windows COM服务的,最明显例子就是组件栏ADO页的所有ADO组件,如TADOQuery,它是从TCustomADODataSet继承下来的,而TCustomADODataSet的定义如下:

TCustomADODataSet = class(TDataSet, IUnknown,

RecordsetEventsVt)

  private

    FRecordsetObject: _Recordset;

    FFindCursor: _Recordset;

    FLookupCursor: _Recordset;

    FLockCursor: _Recordset;

    FRowset: IRowset;

    FAccessor: IAccessor;

    FRowsetFind: IRowsetFind;

    FHAccessor: HACCESSOR;

    FOleRecBufSize: Integer;

end;

ADO(Microsoft ActiveX Data Objects),它是一组通过Microsoft OLE DB 提供者访问数据库的COM对象的集合。如我们研究一下TADOQuery的First方法的实现过程:

TADOQuery.First->TDataSet.First->TdataSet.InternalFirst-> TCustomADODataSet. InternalFirst ->Recordset15. MoveFirst

TADOQuery从TCustomADODataSet继承,而TCustomADODataSet从TdataSet继承,TdataSet.InternalFirst定义的是虚方法,而子类TCustomADODataSet. InternalFirst覆盖了它。TCustomADODataSet. InternalFirs调用接口Recordset15的 MoveFirst方法。

不难发现,TADOQuery.First最终是通过接口调用COM对象实现的。

 

l         Delphi与Windows 外壳

什么是Windows外壳呢?Windows外壳是Windows界面操作的环境,它还为我们编程提供了强大的可扩展性。我们利用Windows外壳实现某些功能的编程,称为外壳扩展。例如,如果你的机器上已经装了WinRAR,在文件夹的右键菜单就会看到WinRAR的压缩菜单。这些功能就是通过Windows的外壳扩展实现的。

Windows外壳是基于COM的,所以所有的外壳扩展都要通过接口实现。Delphi也定义了很多外壳扩展接口,在Delphi7的安装目录下的Source\rtl\Win\ShlObj.pas单元中。

在Delphi的Demo目录下的有一个Virtual Listview的例子,就是通过Windows外壳扩展实现磁盘浏览的,有兴趣的读者可以研究一下。

4 嵌入式汇编语言

在代码中嵌入汇编语言也是Delphi的一大特色,如VCL的根类Tobjce的实现就大量嵌入了汇编语句。

汇编语言是一种比较低级的计算机语言,与硬件的关系比较密切。所以我们在平时编程中尽量不要使用它,但是在某些特殊场合(如性能要求比较高、需要直接操纵硬件)下,使用它还是能发挥很大的作用的。

      

 

                                                            The end.

 

(如需要转载,请注明出处及作者http://haitian.myrice.com)

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口