数组传递:COM/DCOM中如何传递数组




  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=.gif' /> [0..999] of Byte;
    Var
        Data:TData;
        i:Integer;
    begin
        for i:=0 to Size-1 do begin
              Data[i]:=D1[i];
        end;
    end;

    Cle端:

    Var
        D1:OleVariant;
    begin
        D1:=VarArrayCreate([0,99],varByte);

        {
        D1[1]:=45;
          ....  //将值存入D1中

            }
        S.Send4(99,D1);  //S是TestDCOM对象
    end;

Tags:  数组作为参数传递 js传递数组 delphi传递数组 数组传递

延伸阅读

最新评论

发表评论