Russian Qt Forum
Май 16, 2024, 21:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Что я не так делаю, товарищи! [out] BSTR* и QString&  (Прочитано 5218 раз)
mad_celt
Гость
« : Ноябрь 03, 2009, 00:15 »

В компоненте

Код
C++ (Qt)
STDMETHODIMP CConnection::GetConnectionParams(BSTR* login, BSTR* pass, BSTR* db)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
 
CString sLogin = L"wyvern";
CString sPass = L"wyvern";
CString sDb = L"XE";
 
*login = sLogin.AllocSysString();
*pass = sPass.AllocSysString();
*db = sDb.AllocSysString();
 
return S_OK;
}
 

idl-ка
Код
C++ (Qt)
[id(1), helpstring("method GetConnectionParams")] HRESULT GetConnectionParams([out] BSTR* login, [out] BSTR* pass, [out] BSTR* db);
 

В qt-приложении
Код
C++ (Qt)
   QAxObject object("ShellCore.Connection");
   QString login, pass, db;
   object.dynamicCall("GetConnectionParams(QString&,QString&,QString&)", login, pass, db);
   QMessageBox::information(0, "Debug", login + " " + pass + " " + db);
 

и login, и pass, и db - пустые...
я уже немножко отчаялся))
Через queryInterface, работой с интерфейсами и BSTR напрямую все замечательно... А так - ни в какую...
Записан
Rcus
Гость
« Ответ #1 : Ноябрь 03, 2009, 04:53 »

Действительно, с чего бы им измениться.
У QAxBase есть две перегрузки метода dynamicCall: одна принимает (const QVariant &), другая (QList<QVariant>&) ... хм...
Записан
mad_celt
Гость
« Ответ #2 : Ноябрь 03, 2009, 08:21 »

Все, понял, получилось, спасибо)
Нооо... Почему же такое ограничение?)
Записан
Rcus
Гость
« Ответ #3 : Ноябрь 03, 2009, 08:24 »

Эм, ограничение?
Записан
mad_celt
Гость
« Ответ #4 : Ноябрь 03, 2009, 22:13 »

Не суть, в общем)
Спасибо огромное!
Тема исчерпана.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.096 секунд. Запросов: 20.