С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
10 / 10 / 1
Регистрация: 16.12.2011
Сообщений: 14
1

На зачете спросили по ATL COM

25.11.2012, 22:44. Показов 1890. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С помощью мастера ATL COM в Visual Studio на языке C++ создаем проект LB3_AutoSvr в качестве заготовки проекта для формирования внутрипроцессного сервера с использованием ATL.

Добавляем методы в интерфейс IMyMath компонента:
В файл Lb3_AutoSvr.idl было добавлено описание методов в транскрипции IDL:
C++
1
2
3
4
5
6
interface IMyMath : IDispatch{
    [id(1)] HRESULT Add([in] LONG op1, [in] LONG op2, [out,retval] LONG* pResult);
    [id(2)] HRESULT Substract([in] LONG op1, [in] LONG op2, [out,retval] LONG* pResult);
    [id(3)] HRESULT Multiply([in] LONG op1, [in] LONG op2, [out,retval] LONG* pResult);
    [id(4)] HRESULT Divide([in] LONG op1, [in] LONG op2, [out,retval] LONG* pResult);
};
Вопрос: Если из этой части кода, в фразах [out,retval], убрать слово retval и оставить только [out] будет ли система работать, если будет – то я должен буду написать клиент, который сможет обращаться к таким методам сервера.
Но мне, почему то кажется, что не будет, не зря слово retval мастер, при создании проекта, сюда подставил.

Ответ аргументировать.

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2012, 22:44
Ответы с готовыми решениями:

Сижу на зачете !!
Народ, плиз помоите. сижу на зачете. Написать прогу котрая считывает массив целых чисел с...

На зачете, одномерный массив
Создать одномерный массив, вводя значения элементов с клавиатуры. Вывести на экран элементы, меньше...

Ребят, сижу на зачете!
Написать сценарий который при щелчке на странице вставляла перед каждым абзацом новый абзац с...

На зачёте один номер остался
Остался один номер,кто знает прошу ответить. задание: "Дан массив из 10 целых чисел,проверить есть...

3
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,415
26.11.2012, 09:44 2
вилами по воде: retval информирует COM о том, что данные методы являются функциями при вызове которых через IDispatch в языках не предусматривающих анализ HRESULT наподобие VBA указанный параметр является возвращаемым значением. если retval не писать - возвращаемого значения не будет, то есть в этих языках данные методы будут являться процедурами возвращающими результат в одном из параметров. сам не в курсе, интуиция
1
10 / 10 / 1
Регистрация: 16.12.2011
Сообщений: 14
27.11.2012, 00:26  [ТС] 3
Цитата Сообщение от vxg Посмотреть сообщение
вилами по воде: retval информирует COM о том, что данные методы являются функциями при вызове которых через IDispatch в языках не предусматривающих анализ HRESULT наподобие VBA указанный параметр является возвращаемым значением. если retval не писать - возвращаемого значения не будет, то есть в этих языках данные методы будут являться процедурами возвращающими результат в одном из параметров. сам не в курсе, интуиция
Как я понимаю на С++ или С# клиента написать к такой библиотеке можно будет, а на Visual Basic уже нельзя?
0
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,415
27.11.2012, 09:03 4
Цитата Сообщение от Eurobel Посмотреть сообщение
Как я понимаю на С++ или С# клиента написать к такой библиотеке можно будет, а на Visual Basic уже нельзя
нет. клиента можно будет написать на чем угодно. просто VBA не показывает, что и функции и процедуры возвращают HRESULT: в VBA если есть retval - это функция возвращающая переменную соответствующего типа, если нет retval - это процедура не возвращающая ничего. хотя про то, что функции и процедуры реально возвращают HRESULT VBA внутри себя тоже не забывает и при возврате в HRESULT ошибки прерывает программу. как устроена обертка COM в C# я не знаю. однако и в C# и в C++ возможны реализации которые так же как и VBA скрывают от разработчика возврат HRESULT и сопоставляют методам с retval функции, а методам без него - процедуры возбуждая исключение или используя иные способы сигнализации об отказе при возврате в HRESULT ошибки.
1
27.11.2012, 09:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2012, 09:03
Помогаю со студенческими работами здесь

Помощь на зачете в назначенное время
Завтра наша группа будет писать зачет. За одну пару каждый должен будет написать программу и сдать...

Ща на зачёте заставте прогу компилиться
Добавил в робочую прогу функцию расчёта среднего арифметического float SrednArithm (int*mas,int...

Нужен человек для помощи онлайн на зачете
ребята!!!!поможите 16 декабря с 11-13.00 по московскому времени,зачет по информатике,на QBASIC,кто...

Маша проиграла в личном зачете студенческой олимпиады
Маша проиграла в личном зачете студенческой олимпиады, набрав суммарно слишком мало баллов за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru