已解决
 
COM/DCOM中如何传递数组
提问者:Tom   回答:2  浏览次数:297     悬赏分:0

 
|  评论(0) |

COM/DCOM中如何传递数组

如果有了满意的回答请及时采纳,不要辜负了回答者!
回答
 
共 2 条
 
最佳答案
回答者:Yin(Yin)  级别:- (2006-12-03 23:20:14)
 因为COM/DCOM对象都不在Client程序运行的内存空间(内进程COM对象除外,即便 如此,为了统一接口,内进程的COM也不得传递指针),而且在Win32中所有的程序都有自 己独立的2GB的内存空间,程序与程序之间传递指针(内存地址)是毫无意义的, 而数组、字符串等大量的数据在程序中都是分配一定的内存空间,然后用指针加内存偏移量来存取数据的,这时,如何在COM/DCOM对象中如何传递呢? 
    在Win32中引入了一新变量Variant,可以通过Variant传递数组。具体的实现方法 ,用Delphi实现为: 
     Server(COM/DCOM程序)端: 
     procedure TTestDCOM.Send4(Size: Integer; D1: OleVariant); 
     type 
     TData=array [0..999] of Byte; 
     Var 
     Data:TData; 
     i:Integer; 
     begin 
     for i:=0 to Size-1 do 
     begin 
     Data[i]:=D1[i]; 
     end; 
     end; 
     Cleint端: 
     Var 
     D1:OleVariant; 
     begin 
     D1:=VarArrayCreate([0,99],varByte); 
     { 
     D1[1]:=45; 
     //将值存入D1中 
     } 
     //S是TestDCOM对象 
     end; 
 
 
提问者对答案的评价:
 
 |  评论(0) |
回答者:Nicholas(Nicholas)  级别:- (2006-12-03 23:20:31)
注: 
    傅贵是中国大陆Borland程序员站点的维护,在WEB程序设计上有研究。 
 
 |  评论(0) |
提问者请及时处理问题
 
  公告区
  本周推荐专家
专家 专业分类
  Copyright © 2003-2005 Forlink Technologies All Rights Reserved 
版权所有 时力科技 联系:客户服务中心 京ICP证030637号