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,网上都有。