读书人

Automation的 Method方法参数可不可用

发布时间: 2012-03-04 11:13:34 作者: rapoo

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

[解决办法]
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,网上都有。

读书人网 >.NET

热点推荐