用VC写的控件在Delphi里注册后,数组类型会出现一个OleVariant参数,我现在需要调用这个方法,可给OleVariant参数赋值后,运行时总是说我传的不是一个数组类型的参数?
请问,怎样给该参数赋值,让函数能够认识是一个数组,能够工作下去???
函数在VC中原型:
   STDMETHOD(ItemSelect)(BSTR varname, short row, short column, short height, short width, VARIANT_BOOL autosend, VARIANT items);
***items是一个一维数组Delphi注册后的函数:
   procedure ItemSelect(const varname: WideString; row: Smallint; column: Smallint; height: Smallint; width: Smallint; autosend: WordBool; items: OleVariant); safecall;

解决方案 »

  1.   

    将一个变量定义为OleVariant,然后使用VarArrayCreate创建动态Variant数组就可以了。
      

  2.   

    var
      a: OleVariant;
    begin
      a := VarArrayCreate([0, 1], varVariant);
      a[0] := 'test';
      a[1] := 3;
      ItemSelect(..., a);
    end;
      

  3.   

    看这个中的转换
    http://haitian.myrice.com/ByteDataTrans.txt
      

  4.   

    海天子:OleVariant在Delphi之间我都试了,没什么问题
    秋风舞:这种方法我已经试过了,还是不行,有没有其他的方法关键在于原型中  VARIANT items 
      

  5.   

    是不是在VC中报的错?我想可能是VC中的VARIANT不支持数组。
      

  6.   

    用VB写传一个一维数组是可以实现的,可是Delphi就没办法