怎么样将adoquery中的_recordset当作com接口方法的参数传出 怎么样将adoquery中的_recordset当作com接口方法的参数传出,能够当作olevariant传出吗,传出后如何转换为_recordset类型 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 a:OleVariantadoquery1.recordset := Iunknown(a) as _Recordset; 楼上聪明,不过客户端要用的时候呢?还是Recordset方便啊 这种方式不好,我不知道传出的接口是否包含了数据,如果这样做很好的话为什么Delphi要提供ClientDataSet?实际上,客户端使用ClientDataSet一样可以做到临时数据表的目的。不明白你为什么要传递这样的一个接口。 clientdataset速度只有_recordset的1/3还不到 如果你在另外的进程中使用这个传出的接口会怎么样?能够正常使用吗?我怀疑,除了进程内Com传出的接口可以使用,估计进程外com传出的你没有办法用。 我试过a:OleVariantadoquery1.recordset := Iunknown(a) as _Recordset;可以在进程外com使用。但没有自定的直接传出的_recordset快,而且狂耗资源。我有一个方法定义接口方法如下getdata(rs:_recordset...)但没法用类型库编辑器编辑方法,也生成不了tlb.delphi开发工具缺陷太多了!!vcl的结构与com的编程思想我觉得很不协调,各位有什么看法吗? 嗯?奇怪,接口不通过代理就可以在进程之间传送?不懂了,接口一个指针,封装成OleVariant的时候也只是封装了指针?我是这样理解的。进程内传递使用无所谓,进程外传递是什么过程?可以给我详细解释一下吗? 楼上的高手肯定对delphi相当熟悉了,你觉得传指针和传递普通类型(包括class)的数据有什么不一样? 接口和类的传送你认为有什么分别吗?在c++里接口不就是类,至于他们怎么样实现传到进程外,我也没有看相关的文档。 因为进程内存隔离的缘故,同样的指针值在两个进程中意义是不同的。传递普通数据,和传递指针是不同的,指针索引了一个内存,传递普通数据,拷贝了一块内存到另外的进程。传递一个内存索引无意义。接口是类的一个调用标准。接口在无对应的类的实例情况下不能使用,具体的,实例的接口指向了一个方法表,不同实例的同定义接口的行为是不同的。因为对象是存在状态的,所以不能把对象的类当成对象来传送,传递类和传递对象是不同的。两个进程需要共享同一个Com对象,需要代理,实际上,Com对象的宿主仍然在创建他的那个进程当中。或者,你说的传递_RecoredSet只是传递了一个ClassID?在接受进程中重新生成了这个对象?这个不太可能吧?要么ADO提供了代理的方法?他自动地实现了?是怎样的过程? 在三层结构中,用SocketConnection连接我是了解的,传递接口指针,Delphi在服务器端和客户端生成了代理。但是不懂的是,这样做有什么好处?不过是在客户端和服务器端多了两个代理而已,有点莫名其妙的。 一个Combox的基础问题 如何通过树进行数据库的操作? eXescop 打开了 魔兽世界的启动文件 Launcher.exe 安装控件后,每次启动delphi编译程序都要设置搜索路径? 不用delphi的控件,怎样得到指定目录下特定扩展名的所有文件名? 如何进行日期格式的判定??? listview 我怎么建一个动态数组,并多次从新分配空间大小,并保留原来的数据 如何在delphic中实现二进制的储存? 我想认识一些delphi高手 如何把异常的消息截获并保存到文本里? 菜鸟说:这个问题真菜!
adoquery1.recordset := Iunknown(a) as _Recordset;
a:OleVariant
adoquery1.recordset := Iunknown(a) as _Recordset;
可以在进程外com使用。但没有自定的直接传出的_recordset快,而且狂耗资源。
我有一个方法定义接口方法如下
getdata(rs:_recordset...)但没法用类型库编辑器编辑方法,也生成不了tlb.
delphi开发工具缺陷太多了!!vcl的结构与com的编程思想我觉得很不协调,各位有什么看法吗?
接口和类的传送你认为有什么分别吗?在c++里接口不就是类,至于他们怎么样实现传到进程外,我也没有看相关的文档。