COM/DCOM中如何传递数组:

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

因为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.Send4(99,D1); //S是TestDCOM对象

end;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航