cannot convert parameter 1 from 'QVariant' to 'VARIANT' |
Здравствуйте, гость ( Вход | Регистрация )
cannot convert parameter 1 from 'QVariant' to 'VARIANT' |
Гость_Гость_loh_*_* |
15.7.2008, 16:06
Сообщение
#1
|
Гости |
почему мне выдаёт ошибку при работе с методом ком интерфейса cannot convert parameter 1 from 'QVariant' to 'VARIANT'? в документации qt написано что этот типа поддерживается =\
|
|
|
Litkevich Yuriy |
15.7.2008, 17:23
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
пример кода приведи
|
|
|
Гость_Гость_loh_*_* |
15.7.2008, 22:18
Сообщение
#3
|
Гости |
ну что-то типа
CODE QAxObject ao; ao.setControl("geometry.geometryenvironment"); IGeometryEnvironmentPtr ipGeoEnviron(CLSID_GeometryEnvironment); IGeometryFactory2Ptr ipGeomFact(ipGeoEnviron); ao.queryInterface(IID_IGeometryFactory2,(void**)&ipGeomFact); IGeometryPtr ipGeom; QVariant value = query.value(0); if (ipGeomFact){ long bytesRead; if (ipGeomFact->CreateGeometryFromWkbVariant(value, &ipGeom, &bytesRead))) } в query результат запроса в бд |
|
|
Red Devil |
15.7.2008, 22:37
Сообщение
#4
|
Студент Группа: Участник Сообщений: 68 Регистрация: 6.6.2008 Из: Saint-Petersburg Пользователь №: 194 Спасибо сказали: 1 раз(а) Репутация: 3 |
я что то в документации не вижу ссылок на VARIANT из COM ...
в любом случае я сомневаюсь что можно обьект QVariant пихать в метод COM, где ожидается VARIANT. Нужно вначале передать VARIANT, и после получения запроса конвертировать VARIANT в QVariant, если это возможно. |
|
|
Гость_Гость_loh_*_* |
15.7.2008, 23:29
Сообщение
#5
|
Гости |
в документации вот так можно
CODE parameters << QVariant(varlist); int n = object.dynamicCall("fillList(QList<QVariant>&)", parameters).toInt(); но так нельзя передать неподдерживаемый тип (в моем случае IGeometry**): If you need to access properties or pass parameters of unsupported datatypes you must access the COM object directly through its IDispatch implementation or other interfaces. тоесть CODE IUnknown *iface = 0; activeX->queryInterface(IID_IUnknown, (void**)&iface); if (iface) { // use the interface iface->Release(); } но тогда мой QVariant надо как-то преобразовать в VARIANT как это можно сделать? QVariant у меня типа QByteArray, а VARIANT нужен dataTypeEnum == adVarBinary (тоесть Indicates a binary value.) а VARIANT вот тут вариант нужен: [C++] CODE HRESULT CreateGeometryFromWkbVariant(
VARIANT wkb, IGeometry** outGeometry, long* numBytesRead ); |
|
|
Текстовая версия | Сейчас: 19.1.2025, 0:43 |