Показать сообщение отдельно
  #2  
Старый 29.11.2024, 04:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

вот что нагенерил ИИ:
Код:
1
2
3
4
5
type
  IMyComInterface = interface(IDispatch)
    ['{00000000-0000-0000-0000-000000000000}']
    procedure ProcessArray(Values: OleVariant); safecall;
  end;

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
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;

Вызов:
Код:
1
2
3
4
5
6
7
8
9
10
11
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
Ответить с цитированием