0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7

Интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект

27.02.2011, 11:26. Показов 2323. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Необходимо реализовать интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект. Не знаю как правильно описать этот метод в idl-файле.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2011, 11:26
Ответы с готовыми решениями:

Если возвращается переменная ссылочного типа, то возвращается объект или просто ссылка
Почему-то авторы всегда акцентируют внимание на передачу параметров в функцию, а на возврат не очень: using System; using...

Не создаётся ссылка на временный объект
Что же делать? Код: #include <iostream> using namespace std; class BigClass { public:

При присваивании объекта создаётся ссылка на объект, НО
Доброго. На официальном сайте сказано: То есть присваивается ссылка на объект ... Почему же тогда в следующем коде такой...

6
Ghost
27.02.2011, 12:00
Вот пример из ODL файла - практически тот-же IDL
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    [
      odl,
      uuid(1F8352C0-50B0-11CF-960C-0080C7F4EE85),
      helpstring('Definition of interface FolderItemVerbs'),
      dual,
      oleautomation
    ]
    interface FolderItemVerbs : IDispatch {
        [id(0x60020000), propget, helpstring('Get count of open folder windows')]
        HRESULT _stdcall Count([out, retval] long* plCount);
        [id(0x60020001), propget, helpstring('Get Application object')]
        HRESULT _stdcall Application([out, retval] IDispatch** ppid);
        [id(0x60020002), propget, helpstring('Get Parent object')]
        HRESULT _stdcall Parent([out, retval] IDispatch** ppid);
        [id(0x60020003), helpstring('Return the specified verb')]
        HRESULT _stdcall Item(
                        [in, optional] VARIANT index, 
                        [out, retval] FolderItemVerb** ppid);
        [id(0xfffffffc), helpstring('Enumerates the figures')]
        HRESULT _stdcall _NewEnum([out, retval] IUnknown** ppunk);
    };
а вот пример из IDL - файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[
object,
uuid(E205C652-0426-11D2-9A4D-0060081E9D26),
dual,
helpstring('IFPC Interface'),
pointer_default(unique)
]
interface IFPC : IDispatch
{
    [propget, id(1), helpstring('property Arrays')]
    HRESULT Arrays([out, retval] IFPCArrays **pVal);
 
    [propget, id(2), helpstring('property Enterprise')]
    HRESULT Enterprise([out, retval] IFPCEnterprise **pVal);
 
    [id(DISPID_REFRESH), helpstring('method Refresh')]
    HRESULT Refresh();
 
   [propget, id(DISPID_VENDOR_SETS), helpstring('property VendorParametersSets')]
    HRESULT VendorParametersSets([out, retval] IFPCVendorParametersSets **pVal);
 
   [propget, id(3), helpstring('property Type')]
   HRESULT Type( [out, retval] FpcArrayType* pType);
 
};
сделай на своем компе поиск с маской *.idl и удивишься результату
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 12:16  [ТС]
RE: Проблема в другом. Если в методе интерфейса используется ссылка на интерфейс из внешней DLL, то какой в этом случае заголовочный файл подключать в idl-файле и как его сформировать?
0
Ghost
27.02.2011, 16:26
1. oleview поюзай - понравится

2.
import 'oaidl.idl';
import 'ocidl.idl';

ЗЫ. Пиши сразу тот вопрос, который хочешь задать
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 16:39  [ТС]
Дело в том, что oleview я уже юзал. ODL файл полученный с помощью oleview не компилируется в VC. Не могу понять, в чем тут дело.
0
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 16:52  [ТС]
Почему-то odl-файл полученный в oleview содержит много ошибок. Например вместо скобок {} стоят скобки (), пользовательские типы typedef определяются после интерфейсов, в которых они используются. Но даже после исправления этих ошибок файл не копмилируется. Конечно особой проблемы не составит написать 'ручками' правильный idl, пользуясь oleview и аналогией из других idl-файлов, но хотелось бы знать, в чем тут дело.
0
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 7
27.02.2011, 17:48  [ТС]
Все. Разобрался. После переустановки VC oleview делает нормальный idl-файл. Видимо был кривой oleview.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2011, 17:48
Помогаю со студенческими работами здесь

Как в методе создать объект типа?
Как в методе GetById создать объект типа ZipCodeModel. Такой вопрос спросить? КОД! public class ZipCodeModel { ...

Как преобразовать ссылку на объект в указатель на этот объект?
Как преобразовать ссылку на объект в указатель на этот объект? Буду благодарен за помощь.

Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу?
Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу? Т.е. не меняя саму ссылку, изменить тип объекта, на...

Проблема с массивами + System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объект
Ошибка выскакивает на atsakymai = new string; В первой форме //ФОРМА 2: public partial class Form2 : Form { ...

Если объект добавлять в 2 контейнера, то в них будет ссылка или новый объект?
Есть объект - obj. Последовательно добавляю его в два контейнера container1.add(obj); container2.add(obj); Если я удалю...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru