вот что нагенерил ИИ:
Код:
type
IMyComInterface = interface(IDispatch)
['{00000000-0000-0000-0000-000000000000}']
procedure ProcessArray(Values: OleVariant); safecall;
end;
Код:
procedure TMyComObject.ProcessArray(Values: OleVariant);
var
i: Integer;
begin
if VarIsArray(Values) then
begin
for i := VarArrayLowBound(Values, 1) to VarArrayHighBound(Values, 1) do
begin
// Process each element in the array
ShowMessage(IntToStr(Values[i]));
end;
end;
end;
Вызов:
Код:
var
ComObj: IMyComInterface;
Values: OleVariant;
begin
ComObj := CreateComObject(CLASS_MyComObject) as IMyComInterface;
Values := VarArrayCreate([0, 2], varInteger);
Values[0] := 10;
Values[1] := 20;
Values[2] := 30;
ComObj.ProcessArray(Values);
end;
Тут передача интов в примере, поменять на varString, а исходный массив - простой динамический массив, только надо посмортеть, если не ошибаюсь, то лучше использовать Array Of WideString