Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт компонентов, методы С++ в JavaScript 
:(
    Опции темы
racner
  Дата 14.5.2010, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте дорогие эксперты!

Работая с ASP столкнулся с одним моментом и у меня возник такой вопрос:

Как же передаются аргументы функций из  одного языка (в данном случае - JavaScript) в функции компоненты, написанной на С++

Вот примерно такой код:
Код

//файл напр. default.asp 

<% 
Session("MyObject") = Server.CreateObject("MyProg.MyClass.1"); // получаем ссылку на Объект по ProgID


try
{
// используем объект
pMyArrObj = Session("MyObject").MyMethod(param1,
                                                   param2,
                                                    param4,
                                                    param5,
                                                    param6,
                                                    param7);
}
 catch (exception)
{
//что-то не так
}
%>

// а вот метод на С++ [I](файл например MyClass.cpp)[/I] в компоненте определяется так:

HRESULT MyClass::MyMethod(
    /*[in]*/ int param1,
    /*[in]*/ int param2,
    /*[in]*/ int param3,
    /*[in]*/ int param4,
    /*[in]*/ int param5,
    /*[in]*/ int param6,
    /*[in]*/ int param7,
    /*[out, retval]*/ CMyArrObj* pMyArrObj1)
{
     /*какой-то код*/

    return E_INVALIDARG;

    /*какой-то код*/

    return S_OK;
}



Почему в реализации функция возвращает значение HRESULT, НО мы испльзуем ее в JavaScript как будто она возвращает указатель на CMyArrObj. В добавок используем  исключение catch (exception), будто она все-таки возвратила HRESULT...

Где про это можно почитать поподробнее, желательно на русском? (или книга какая-нить может есть= )  )

заранее благодарен за внимание =)
    
PM MAIL   Вверх
racner
  Дата 30.7.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне стало понятно в чем тут дело.

Для описания интерфейса в Проекте сущестуют специальные файлы с описанием интерфейса: *.idl

Там может быть такая строчка:

Код

[id(62), helpstring("method GetFieldInAD")] HRESULT GetFieldInAD([in] BSTR Domain,[out, retval] BSTR *pField);


Ключевое слово retval как раз и говорит о том, что функция может вызываться так: 

pFiled  = GetFieldInAD("Domain");

ровно как и:

GetFieldInAD("Domain", pField);

=)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ASP | Следующая тема »


 




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


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

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