Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2015, 15:05   #1
Juggernout
Пользователь
 
Аватар для Juggernout
 
Регистрация: 01.10.2012
Сообщений: 23
Вопрос Реализация метода интерфейса ActiveX. Проблема с типом Variant.

Здравствуйте, форумчане!
Пишу программу для реализации интерфейса между двумя разными приложениями, точнее, их базами данных. При вызове метода возникает ошибка:

Описание метода следующее:

Отрывок интересующего кода:
...
VARIANT a;
ClApi -> GetClassifierCharacteristic(klass,a ,0,0);
...
Понимаю, что проблема со вторым параметром и что нет такого преобразования, но не понимаю в принципе, что это такой за волшебный тип "System::Object ^%" (конечно, может быть тут и не Variant, а массив из Variant, но по сути в С++ такой тип данных попросту отсутствует, как сам, так и его массив. Читал про 3 возможных реализации такого типа, сделал одним из способов - результат неизменен). Причём, пытался делать разными типами этот параметр - не получалось, ошибка - та же. Имеются примеры использования этого интерфейса в данном аспекте на Delphi, там всё просто - объявляют Variant или COleVariant и всё работает на ура. А вот на С++ незадача.
Помогите, пожалуйста!
P.S. Я - новичок.
Juggernout вне форума Ответить с цитированием
Старый 06.05.2015, 15:41   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
но не понимаю в принципе, что это такой за волшебный тип "System::Object ^%"
А это вы, батенька, не в С++ полезли,а в С++ CLI... Поделку бесовскую.

Определитесь для начала с языком.
p51x на форуме Ответить с цитированием
Старый 06.05.2015, 17:26   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Дла начала инициализировать вариант перед вызовом...

А исходник метода GetClassifierCharacteristic есть? Может просто посмотреть что он делает и что во что пытается превратить?
waleri вне форума Ответить с цитированием
Старый 06.05.2015, 17:49   #4
Juggernout
Пользователь
 
Аватар для Juggernout
 
Регистрация: 01.10.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Дла начала инициализировать вариант перед вызовом...

А исходник метода GetClassifierCharacteristic есть? Может просто посмотреть что он делает и что во что пытается превратить?
Насколько я понимаю, то если инициализировать переменную типа Variant - она как бы определится типом инициализирующего значения..
Исходников, увы, нет...

Цитата:
Сообщение от p51x Посмотреть сообщение
А это вы, батенька, не в С++ полезли,а в С++ CLI... Поделку бесовскую.

Определитесь для начала с языком.
Пишу в VSC++ 2010. Если я правильно интуитивно Вас понял, то юзать данную библиотеку с этим интерфейсом без CLI нельзя.. Как быть?

Последний раз редактировалось Stilet; 07.05.2015 в 09:47.
Juggernout вне форума Ответить с цитированием
Старый 06.05.2015, 19:19   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Нет. Это вы залезли в C++ CLI, который .NET, вот и появился ваш System::Object... А в С++ вполне есть вариант
p51x на форуме Ответить с цитированием
Старый 06.05.2015, 19:25   #6
Juggernout
Пользователь
 
Аватар для Juggernout
 
Регистрация: 01.10.2012
Сообщений: 23
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Нет. Это вы залезли в C++ CLI, который .NET, вот и появился ваш System::Object... А в С++ вполне есть вариант
Ну так я этот Variant и пытаюсь использовать. А вылетает ошибка с магическим типом данных. Вот и незадача.
Juggernout вне форума Ответить с цитированием
Старый 06.05.2015, 22:34   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Juggernout Посмотреть сообщение
если инициализировать переменную типа Variant - она как бы определится типом инициализирующего значения
Прочитайте про функции VariantInit() и VariantClear()
waleri вне форума Ответить с цитированием
Старый 07.05.2015, 04:02   #8
Juggernout
Пользователь
 
Аватар для Juggernout
 
Регистрация: 01.10.2012
Сообщений: 23
По умолчанию Решено.

Всем спасибо! Решено:
....
System::Object s;
ClApi->GetClassifierCharacteristic(klas s, %s, 0,0);
....
Juggernout вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация интерфейса в другом проекте asusGEN C# (си шарп) 5 24.01.2015 14:15
Зачем пишут this перед типом в параметрах метода? IT-Lopata C# (си шарп) 9 30.03.2014 01:01
Реализация интерфейса и программ. holdos Помощь студентам 2 28.03.2012 22:03
реализация интерфейса, подобного BPWin studenth Общие вопросы Delphi 1 08.02.2008 13:29