谢谢

解决方案 »

  1.   

    会!服务端过程如下:
    procedure Tinsertobj.Method1(const vdatas: WideString; Param2: OleVariant);
    begin
    end;
    //param2接受数组
    客户端发送
    procedure TForm1.Button1Click(Sender: TObject);
    var
      zxs: olevariant; //如果设置array[1..10] of string;会报类型不对的错array与olevariant不同
    begin
    zxs[1]:='江苏';
     zxs[2]:='浙江';
     zxs[3]:='安徽';
     zxs[4]:='河北';
     zxs[5]:='山西';
     zxs[6]:='内蒙';
     zxs[7]:='辽林';
     zxs[8]:='吉林';
     zxs[9]:='黑龙江';
     zxs[10]:='福建';
     ecook.Method1('dd',zxs);
    end;报错:invalid argument!
      

  2.   

    声明一个动态数组就可以了,静态数组不兼容,但动态数组就可以.最后把这个动态数组赋给OleVariant就可以了.
      

  3.   

    sorry,试试这样:)
    var
      zxs: array[1..10] of string; //如果设置array[1..10] of string;会报类型不对的错array与olevariant不同
      zxsOle:OleVariant;
      tempPointer:Pointer;
    begin 
       zxs[1]:='江苏';
       zxs[2]:='浙江';
       zxs[3]:='安徽';
       zxs[4]:='河北';
       zxs[5]:='山西';
       zxs[6]:='内蒙';
       zxs[7]:='辽林';
       zxs[8]:='吉林';
       zxs[9]:='黑龙江';
       zxs[10]:='福建';
       zxsOle := VarArrayCreate([0,sizeof(zxs)],varByte);
       tempPointer := VarArrayLock(zxsOle);
       Move(zxs,tempPointer^,sizeof(zxs));
       VarArrayUnLock(zxsOle);
       ecook.Method1('dd',zxsOle);
      

  4.   

    那请问我在服务端的程序里如何接收?比如定义一个数组型变量,如何接收param2里的10个数?
      

  5.   

    一样的,只不过把Move函数中前两个参数调换位置