Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SAFEARRAY элемент по индексу

11
23 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
 
Код:
VARIANT ParamNames, ParamValues;
ParamNames.vt = VT_SAFEARRAY;
ParamValues.vt = VT_SAFEARRAY;
spConf->GetParameterCount(&ParamCount);
spConf->GetParameters(&ParamNames, &ParamValues);
for (long j = 0; j < ParamCount; j++)
{
         BSTR *ParamName = (BSTR*) ParamNames.parray[j].pvData;
}


при j == 0 в ParamName попадает правильно, но если j > 0 тогда <Bad Ptr>
В отладчике MS VS видно что ParamNames.parray содержит много значений и все они индексированы.
Как получить значение по индексу?
ЗЫ: в ParamNames приходят только BSTR строки
11
23 июня 2008 года
oxotnik333
2.9K / / 03.08.2007
решение нашлось здесь
11
17 сентября 2008 года
oxotnik333
2.9K / / 03.08.2007
подниму старую тему...
не получается получить строку (приходит <Bad Ptr>)

Цитата:

void SomeFunc (VARIANT pbstrObjectID)
{
BSTR HUGEP *pbstrIDs;

HRESULT hr = SafeArrayAccessData(pbstrObjectID.parray, (void HUGEP**)&pbstrIDs); // в pbstrIDs получается <Bad Ptr>
BSTR bstrID = pbstrIDs[pbstrObjectID.parray->rgsabound->cElements-1];
SafeArrayUnaccessData(pbstrObjectID.parray);
....
}



как исправить?
ЗЫ: компилю в MS VS, и грешу на настройки проекта, т.к. другой проет с таким же кодом работает без проблем.

14
17 сентября 2008 года
Phodopus
3.3K / / 19.06.2008
Ну а ошибка-то SafeArrayAccessData() какая?
11
17 сентября 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Phodopus
Ну а ошибка-то SafeArrayAccessData() какая?


S_OK

дело было не в этом, а в том что в SAFEARRAY было не BSTR а VARIANT::VT_BSTR

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог