Перейти к содержимому

Фотография

передача объектов в COM компоненты


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 niky

niky

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:niky

Отправлено 15 мая 2006 - 08:46

Здравствуйте!
Имею TestComplete версии 3.* - выше начальство покупать не хочет.
Поскольку он не понимает NET.Framework 2.0, использую COM объекты
(да и в самом деле работает быстрее).
Но загвоздка - не могу передать массив (объект Array) в качестве параметра
Ругается, что "Класс не поддерживает программирование объектов".
Помогите, плз! Я только начинаю, JScript знаю очень плохо.
(COM компонент написан на C#)
  • 0

#2 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 15 мая 2006 - 09:38

Здравствуйте.

Array в JScript не является стандартным объектом, и не факт, что получиться его передать. Можно попробовать передать то, что возвращается методом VBArray, поможет ли, точно сказать не могу - myArr.VBArray().

А как работать с dotNETBridge в TestComplete 3 вот здесь писал objective.
  • 0
С уважением,
Дмитрий

#3 niky

niky

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:niky

Отправлено 16 мая 2006 - 04:38

VBArray не метод, к сожалению. Это объект, который в конструкторе имеет ссылку на VB массив (то есть на массив, созданный на VBScript). Ну и как его создать если Project на JScript?
  • 0

#4 objective

objective

    Новый участник

  • Members
  • Pip
  • 47 сообщений

Отправлено 16 мая 2006 - 15:28

Здравстуйте
Здесь как раз на Jscript. У меня всё работает, если дело касается dotnet сборок. При этом сами сборки нужно писать с использованипем исключительно framework 1.1 (во всяком случае не 2.0)
  • 0

#5 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 16 мая 2006 - 17:16

Здравствуйте.

Да, действительно, неправду сказал. Преобразовать JScript array в Safe array можно используя вот этот код (взят из хелпа ТС4):
function ConvertJScriptArray(JScriptArray)
{
  // Uses the Dictionary object to convert JScript array
  var objDict = new ActiveXObject("Scripting.Dictionary");
  objDict.RemoveAll();
  for (var i in JScriptArray)
    objDict.Add(i, JScriptArray[i]);
  return objDict.Items();
}

  • 0
С уважением,
Дмитрий

#6 niky

niky

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:niky

Отправлено 19 июня 2006 - 11:47

Еще раз здравствуйте! Спасибо (запоздалое, правда) за помощь. Теперь у меня обратная проблема:
Метод, реализуемый в COM компоненте, возвращает массив.
Как его увидеть в TestComplete?
Метод отрабатывает, но возвращает не объект, а нечто {...} - если через Watch смотреть. Даже если переменную ранее принудительно объявить как объект - не помогает.
  • 0

#7 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 22 июня 2006 - 06:30

Здравствуйте.

Попробуйте так:
//JScript
var realArray = new VBArray(myArray);
realArray = realArray.toArray();

  • 0
С уважением,
Дмитрий


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных