BSTR Razdel;
long nParamCount=0;
VARIANT vParams, vValues;
pSwCfg->GetParameterCount(&nParamCount);
pSwCfg->GetParameters(&vParams, &vValues);
Найти элемент массива VT_ARRAY
Код:
количество элементов масивов равна nParamCount.
Стоит задача, найти в масиве vParams элемент, значение которого равно "Раздел СП", и значение елемента масива vValues с таким же индексом присвоить переменной Razdel.
Для этого организовываю цикл:
Код:
int i;
for ( i=0; i<nParamCount; i++)
{
}
for ( i=0; i<nParamCount; i++)
{
}
Как в этом цикли проверить значение каждого элемента масива?
Как присвоить значение элемента масива переменной Razdel?
Зарание благодарен!
Код:
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;
}
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);
А в чём именно?
Код:
BSTR bName, bValues;
Код:
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);
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);