设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源平台

COM/DCOM中如何传递数组:

来源网络收集 作者:佚名 时间:2007-4-26 4:04:54 该文得分0
   因为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;

相关文章
广告赞助
网友评论

共有 0 位网友发表了评论,平均得分: 0 查看完整内容

用户名:

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

(注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码