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

Ваш аккаунт

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

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

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

Найти элемент массива VT_ARRAY

40K
01 сентября 2009 года
hztp_serg
25 / / 10.07.2009
Есть два масива VT_ARRAY полученых от функции COM-обьекта:
 
Код:
BSTR Razdel;
long nParamCount=0;
VARIANT vParams, vValues;
pSwCfg->GetParameterCount(&nParamCount);
pSwCfg->GetParameters(&vParams, &vValues);

количество элементов масивов равна nParamCount.
Стоит задача, найти в масиве vParams элемент, значение которого равно "Раздел СП", и значение елемента масива vValues с таким же индексом присвоить переменной Razdel.
Для этого организовываю цикл:
 
Код:
int i;
for ( i=0; i<nParamCount; i++)
{
}

Как в этом цикли проверить значение каждого элемента масива?
Как присвоить значение элемента масива переменной Razdel?
Зарание благодарен!
2.2K
01 сентября 2009 года
REFOT
181 / / 08.04.2005
http://rsdn.ru/article/com/varsafearr.xml
40K
02 сентября 2009 года
hztp_serg
25 / / 10.07.2009
Пробую так:
Код:
long nParamCount=0;
    VARIANT vParams, vValues;
    BSTR bName, bValues;
    pSwCfg->GetParameterCount(&nParamCount);
    pSwCfg->GetParameters(&vParams, &vValues);
    ::VariantCopyInd(&m_Names, &vParams);
    ::VariantCopyInd(&m_Values, &vValues);
    SafeArrayAccessData(vParams.parray, (void**)&bName);
    SafeArrayAccessData(vValues.parray, (void**)&bValues);

    CString Temp3;
    for ( i=0; i<nParamCount; i++)
    {
        Temp3 = bValues;
    }

запускаю отладку, вижу что цикл проходит но значения bValues какие-то странные. В vValues значения нормальные, а уже bValues почему-то их не получает. Видимо проблема в
 
Код:
SafeArrayAccessData(vValues.parray, (void**)&bValues);

А в чём именно?
2.2K
02 сентября 2009 года
REFOT
181 / / 08.04.2005
Проблема в:
 
Код:
BSTR bName, bValues;
11
03 сентября 2009 года
oxotnik333
2.9K / / 03.08.2007
Код:
VARIANT ParamNames, ParamValues;
spConf->GetParameterCount(&ParamCount);
spConf->GetParameters(&ParamNames, &ParamValues);
BSTR HUGEP *pbstrParamNames;
BSTR HUGEP *pbstrParamValues;
SafeArrayAccessData(ParamNames.parray, (void HUGEP**)&pbstrParamNames);
SafeArrayAccessData(ParamValues.parray, (void HUGEP**)&pbstrParamValues);
for (unsigned long j = 0; j < ParamNames.parray->rgsabound->cElements; j++)
{
    CComBSTR ParamName = pbstrParamNames[j];
    CComBSTR ParamValue = pbstrParamValues[j];

    if (ParamName == L"$СВОЙСТВО@Материал")
        if (ParamValue == L"Материал <не указан>")
            Matherial = L"";
        else Matherial = ParamValue;
}
SafeArrayUnaccessData(ParamNames.parray);
SafeArrayUnaccessData(ParamValues.parray);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог