crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QVariant -> COM VARIANT
shdevlp
  опции профиля:
сообщение 8.11.2011, 13:11
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 8.11.2011
Пользователь №: 2986

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте коллеги, помогите разобраться в сложном для меня вопросе — есть сгенеренный
утилитой dumpcpp класс из tlb файла, из которого мне нужно использовать функцию следующего вида:

inline uint RSystem::GetInfo(const QVariant& varInfo);

в Оригинале эта функция выглядит так:

HRESULT GetInfo(VARIANT varInfo);

более того для вызова этой функции varInfo надо подготовить таким образом:

INFO data[16];
VariantInit(&varInfo);

varInfo.vt = VT_BYREF|VT_UI1;
varInfo.pbVal = (BYTE *)&data;

Т.е. нужно каким то образом правильно преобразовать VARIANT в QVariant.

Кто знаком с данным вопросом, куда копать? Может есть готовые решения?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
sidsukana
  опции профиля:
сообщение 8.11.2011, 17:32
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

Спасибо сказали: 10 раз(а)




Репутация:   2  


А регистрация нового типа через Q_DECLARE_METATYPE не подходит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
shdevlp
  опции профиля:
сообщение 8.11.2011, 22:39
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 8.11.2011
Пользователь №: 2986

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(sidsukana @ 8.11.2011, 17:32) *
А регистрация нового типа через Q_DECLARE_METATYPE не подходит?


пробывал, не подходит - компилируется - но падает на этапе выполнения

Цитата(ssoft @ 8.11.2011, 15:37) *
Цитата(shdevlp @ 8.11.2011, 14:11) *
Кто знаком с данным вопросом, куда копать? Может есть готовые решения?


Готовых решений,я думаю, нет.
Здесь нужно аккуратно сопоставить типы VARIANT с типами QVariant.
Встроенные типы QVariant находятся в перечислителе QVariant::Type.


помогите сопоставить вручную.
входной параметр в функцию VARIANT varInfo

INFO data[16];
VariantInit(&varInfo);

varInfo.vt = VT_BYREF|VT_UI1;
varInfo.pbVal = (BYTE *)&data;

Нашел описание в VARIANT

VT_BYREF | VT_UI1 - соответствует BYTE * pbVal;

в enum QVariant::Type я не нашел подобия BYTE * (( может использовать QVariant::Type = QByteArray?

Цитата(shdevlp @ 8.11.2011, 22:31) *
Цитата(sidsukana @ 8.11.2011, 17:32) *
А регистрация нового типа через Q_DECLARE_METATYPE не подходит?


пробывал, не подходит - компилируется - но падает на этапе выполнения

Цитата(ssoft @ 8.11.2011, 15:37) *
Цитата(shdevlp @ 8.11.2011, 14:11) *
Кто знаком с данным вопросом, куда копать? Может есть готовые решения?


Готовых решений,я думаю, нет.
Здесь нужно аккуратно сопоставить типы VARIANT с типами QVariant.
Встроенные типы QVariant находятся в перечислителе QVariant::Type.


помогите сопоставить вручную.
входной параметр в функцию VARIANT varInfo

INFO data[16];
VariantInit(&varInfo);

varInfo.vt = VT_BYREF|VT_UI1;
varInfo.pbVal = (BYTE *)&data;

Нашел описание в VARIANT

VT_BYREF | VT_UI1 - соответствует BYTE * pbVal;

в enum QVariant::Type я не нашел подобия BYTE * (( может использовать QVariant::Type = QByteArray?


Слабо представляю что должно быть в памяти вместо переменной VARIANT при вызове этой функции


Цитата
Цитата(sidsukana @ 8.11.2011, 17:32) *
А регистрация нового типа через Q_DECLARE_METATYPE не подходит?


пробывал, не подходит - компилируется - но падает на этапе выполнения

Цитата(ssoft @ 8.11.2011, 15:37) *
Кто знаком с данным вопросом, куда копать? Может есть готовые решения?


Готовых решений,я думаю, нет.
Здесь нужно аккуратно сопоставить типы VARIANT с типами QVariant.
Встроенные типы QVariant находятся в перечислителе QVariant::Type.


помогите сопоставить вручную.
входной параметр в функцию VARIANT varInfo

INFO data[16];
VariantInit(&varInfo);

varInfo.vt = VT_BYREF|VT_UI1;
varInfo.pbVal = (BYTE *)&data;

Нашел описание в VARIANT

VT_BYREF | VT_UI1 - соответствует BYTE * pbVal;

в enum QVariant::Type я не нашел подобия BYTE * (( может использовать QVariant::Type = QByteArray?

Слабо представляю что должно быть в памяти вместо переменной VARIANT при вызове этой функции

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.12.2024, 12:57