crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> 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
);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.1.2025, 0:43