Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача объекта Array в COM - метод 
:(
    Опции темы
log584
Дата 3.1.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 2.1.2010

Репутация: нет
Всего: нет



Поздравляю всех с наступившим!
Все что задумал получилось, спасибо.

Это сообщение отредактировал(а) log584 - 3.1.2011, 18:22
PM MAIL   Вверх
nikolaynnov
Дата 19.12.2012, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.10.2010

Репутация: нет
Всего: нет



Цитата(jonie @  23.12.2010,  09:45 Найти цитируемый пост)

Код

function ax2js(axArray)
{
    return new VBArray(array).toArray();
}



Может глупый вопрос: зачем "new VBArray"?

Вроде работает просто: 
Код

function ax2js(axArray)
{
   return axArray.toArray();
}



Тогда вообще ax2js можно не использовать, а сразу писать:
Код

var ar = ax.ArrayProperty.toArray();


Или есть какие-то подводные камни, и надо всегда использовать new VBArray()?
PM MAIL   Вверх
xvr
Дата 19.12.2012, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 8
Всего: 222



Цитата(nikolaynnov @  19.12.2012,  17:50 Найти цитируемый пост)
Может глупый вопрос: зачем "new VBArray"?
Для того, что бы из SAFEARRAY сделать легальный JS объект (VBArray). Сам по себе SAFEARRAY в JS никак не может быть использован

Цитата(nikolaynnov @  19.12.2012,  17:50 Найти цитируемый пост)
Вроде работает просто: 

Именно для SAFEARRAY'ев?

PM MAIL   Вверх
nikolaynnov
Дата 20.12.2012, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.10.2010

Репутация: нет
Всего: нет



Цитата(xvr @  19.12.2012,  20:35 Найти цитируемый пост)
Именно для SAFEARRAY'ев?


Именно. Вот более подробный пример:

В idl:
Код

    [propget, id(8), helpstring("property cameras")] HRESULT cameras([out, retval] SAFEARRAY(VARIANT) *pArray);
    [propput, id(8), helpstring("property cameras")] HRESULT cameras([in] SAFEARRAY(VARIANT) Array);


В cpp:
Код

STDMETHODIMP CFtpClient::get_cameras( SAFEARRAY** pVal )
{
    if(!pVal)
        return E_INVALIDARG;

    CComSafeArray<VARIANT> bsVal;

    for (std::set<CString>::const_iterator it = m_cameraIds.begin(); it != m_cameraIds.end(); ++it)
    {
        CComVariant str = *it;
        if (FAILED(bsVal.Add(str)))
            Log(TEXT("CComSafeArray failed"));
    }
    *pVal = bsVal.Detach();
    return S_OK;
}


И в скрипте:
Код

    var cameras = myObj.cameras.toArray(); 
    if (!cameras.length)
        return; 
    ...
    for (var i = 0; i < cameras.length; i++)
    {
        var cam = cameras[i];
        ...
    } 

PM MAIL   Вверх
xvr
Дата 20.12.2012, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 8
Всего: 222



Значит доделали функциональность с какой то версии JS интерпретатора. Раньше такое не проходило (вроде)

PM MAIL   Вверх
Google
  Дата 26.5.2019, 22:02 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1052 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.