请问有哪位高手知道Automation的Method的参数可不可以用数组?怎样实现?

解决方案 »

  1.   

    Automation兼容的数据类型有:
    Byte, Currency, Real, Double, Real48, Integer, Single, Smallint, AnsiString, ShortString, Borland.Delphi.System.TDateTime , Borland.Vcl.Variants.Variant , OleVariant, and WordBool你可以直接用OleVariant来代替数组:
    procedure HandleArray(const params: OleVariant); // safecall;
    var
    i: Integer;
    value: Variant;
    begin
    Assert(VarArrayDimCount(params) = 1);
    for i := VarArrayLowBound(params, 1) to VarArrayHighBound(params, 1) do
    begin
    value := VarArrayGet(params, [i]);
    //...
    end;
    end;E.g. HandleArray(VarArrayOf([1, 'abc', 2.3]));如果是字节数组,即Variant的类型为:VarArray or VarByte,可以用VarArrayLock和VarArrayUnLock,网上都有。