如何从COM(类型库)返回TADOConnection

时间:2017-02-14 07:35:50

标签: delphi delphi-7

我正在研究Delphi 7,我想在不同的Delphi应用程序之间共享ADO连接对象。如何使用类型库?

在创建方法时,我只能返回String / integer / some数据类型,而且我没有看到任何TADOConnection。如何返回tADOConnection?

enter image description here

1 个答案:

答案 0 :(得分:1)

TAdoConnection,以及AdoDB.PAS中定义的所有其他TAdoxxx对象, “位于”顶部,并使用在Windows的ADO子系统中创建的对象。 如果查看D7源单元AdoInt.Pas,这是一个类型库导入 C:\ PROGRAM FILES \ COMMON FILES \ SYSTEM \ ADO \ MSADO15.DLL。对象接口之一 在它中定义的是_Connection,它是一个完成所有工作的实例 对于TAdoConnection。

AdoInt.Pas中定义的一些接口对象跨进程边界工作, 最值得注意的是RecordSet对象,它是中间体的ADO级对象 在服务器和Delphi端的AdoCustomDataset后代之间,如TAdoQuery, David Sceppa的“Programming ADO”一书中有一章有关这一章(微软出版社) 我已经编写了一个测试COM服务器,它通过COM使RecordSet对象可用,并且工作正常。

然而,就我已经能够通过实验建立,它是不可能的 获取TAdoConnection或其底层ConnectionObject以跨进程工作 使用COM的边界。

但是,如果最初激发你在这个方向上的想法只是在每个新项目中必须以相同方式继续设置AdoConnections的繁琐,我个人所做的只是派生一个自定义TAdoConnection后代来设置属性你总是在代码中使用,然后用Delphi注册它,以便它显示在Component Palette上。