QVariant -> COM VARIANT |
Здравствуйте, гость ( Вход | Регистрация )
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. Кто знаком с данным вопросом, куда копать? Может есть готовые решения? |
|
|
Алексей1153 |
8.11.2011, 13:41
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
сильно сомневаюсь, что прямое преобразование возможно. Наверное, можно только "вручную" скопировать нужные поля из одной переменной в другую
|
|
|
ssoft |
8.11.2011, 15:37
Сообщение
#3
|
Участник Группа: Участник Сообщений: 130 Регистрация: 17.2.2010 Из: Москва Пользователь №: 1470 Спасибо сказали: 30 раз(а) Репутация: 3 |
|
|
|
sidsukana |
8.11.2011, 17:32
Сообщение
#4
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
А регистрация нового типа через Q_DECLARE_METATYPE не подходит?
|
|
|
shdevlp |
8.11.2011, 22:39
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 8.11.2011 Пользователь №: 2986 Спасибо сказали: 0 раз(а) Репутация: 0 |
А регистрация нового типа через Q_DECLARE_METATYPE не подходит? пробывал, не подходит - компилируется - но падает на этапе выполнения Кто знаком с данным вопросом, куда копать? Может есть готовые решения? Готовых решений,я думаю, нет. Здесь нужно аккуратно сопоставить типы 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? А регистрация нового типа через Q_DECLARE_METATYPE не подходит? пробывал, не подходит - компилируется - но падает на этапе выполнения Кто знаком с данным вопросом, куда копать? Может есть готовые решения? Готовых решений,я думаю, нет. Здесь нужно аккуратно сопоставить типы 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 при вызове этой функции Цитата А регистрация нового типа через Q_DECLARE_METATYPE не подходит? пробывал, не подходит - компилируется - но падает на этапе выполнения Кто знаком с данным вопросом, куда копать? Может есть готовые решения? Готовых решений,я думаю, нет. Здесь нужно аккуратно сопоставить типы 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, 23:17
Сообщение
#6
|
Участник Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: 2 |
На этапе выполнения? Поподробней.
Вот я делал
|
|
|
shdevlp |
9.11.2011, 8:49
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 8.11.2011 Пользователь №: 2986 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 2.12.2024, 10:45 |