Имя: Пароль:
1C
 
Преобразование типа VARIANT в double*
0 fyntom
 
22.06.07
16:27
как преобразовать VARIANT в double*?
делаю так, передает че попало, а не массив:
/**************************
VARIANT lfun = GetNParam(*paParams,3);
result=calc(n.intVal, m.intVal,&cfun.dblVal,&lfun.dblVal,zk.dblVal);
double* CAddIn::calc(int n1,int m1,double *cfun,double *lfun,double zk)
/**-***********************
lfun передается из 1с 8.0
int и double нормально, а с массивами косяк
1 fyntom
 
22.06.07
17:11
ПОДНЯТЬ ТЕМУ
2 Волшебник
 
модератор
22.06.07
17:14
см. объект COMSafeArray
3 DmitrO
 
22.06.07
18:57
ну дык в приведенном коде собственно не массив и читается из lfun..
чтобы из 1с получить данные в виде массива double, надо из 1С передавать объект COMSafeArray типа VT_R8
потом так:
if (V_VT(&lfun) == (VT_R8|VT_ARRAY))
{
 SAFEARRAY* psa = V_ARRAY(&lfun);
 double HUGEP *pData;
 SafeArrayAccessData(psa, (void HUGEP**)&pData); //проверить HRESULT
 //тут имеем наш массив double-ов, вызываем calc
 SafeArrayUnaccessData(psa); //проверить HRESULT
}
else
{
 //не то нам передали из 1С..
}
AdBlock убивает бесплатный контент. 1Сергей