Delphi初学者参考(二)(2)
Delphi与Windwos COM服务 COM是什么东西?COM(Component Object Model),组件对象模型,它是基于Windows平台的让不同的独立对象能相互通讯的不受任何计算语言约束的软件组件模型,它定义一组API和一个二进制标准。这个定义比较抽象,首先它是一种组件模型,定义了一种组件对象规范,实现这个COM模型的对象就是COM对象。COM对象是通过接口(Interface)来实现访问的,一个COM对象可以包含一个或多个接口,这些接口构成了COM对象的功能,你可以像访问VCL对象方法一样访问COM对象的接口方法。COM对象的目的是实现资源共享,它在二进制代码级别实现了共享,所以它可以用不同的编程语言来实现,也可以由不同的编程语言来调用,这类似于DLL(其实COM的思想来源来DLL)。VCL与COM COM是Microsoft以前极力推崇的东西,所以在Windows操作系统中无处不在,同样Delphi的VCL也有调用Windows COM服务的,最明显例子就是组件栏ADO页的所有ADO组件,如TADOQuery,它是从TCustomADODataSet继承下来的,而TCustomADODataSet的定义如下:TCustomADODataSet = class(TDataSet, IUnknown, RecordsetEventsVt)privateFRecordsetObject: _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对象实现的。Delphi与Windows 外壳 什么是Windows外壳呢?Windows外壳是Windows界面操作的环境,它还为我们编程提供了强大的可扩展性。我们利用Windows外壳实现某些功能的编程,称为外壳扩展。例如,如果你的机器上已经装了WinRAR,在文件夹的右键菜单就会看到WinRAR的压缩菜单。这些功能就是通过Windows的外壳扩展实现的。 Windows外壳是基于COM的,所以所有的外壳扩展都要通过接口实现。Delphi也定义了很多外壳扩展接口,在Delphi7的安装目录下的SourcertlWinShlObj.pas单元中。 在Delphi的Demo目录下的有一个Virtual Listview的例子,就是通过Windows外壳扩展实现磁盘浏览的,有兴趣的读者可以研究一下。嵌入式汇编语言 在代码中嵌入汇编语言也是Delphi的一大特色,如VCL的根类Tobjce的实现就大量嵌入了汇编语句。 汇编语言是一种比较低级的计算机语言,与硬件的关系比较密切。所以我们在平时编程中尽量不要使用它,但是在某些特殊场合(如性能要求比较高、需要直接操纵硬件)下,使用它还是能发挥很大的作用的。
首页 上页 | 1 | 2 | 下页 尾页 共 2 页