2014-09-18 2 views
1

Я работаю над простым дополнением XLL и пытаюсь получить ввод с помощью обычного двойного * (не FP или OPER), потому что из того, что я понимаю, Excel должен работать с обычным C типы данных. Я не могу заставить его работать после многих изменений, теперь он возвращает значение только в моей последней ячейке. Что я делаю не так? \Excel/C - получить ввод с массивом *

static AddIn xai_array_try(
    "?xll_array_try", XLL_DOUBLE XLL_DOUBLE_, 
    "ARRAY.TRY", "Array", 
    "STL", "Test Sum Array." 
    ); 

double WINAPI xll_array_try(const double *arr) { 
#pragma XLLEXPORT 

    int i; 
    double sum = 0; 

    int size = 3; 

    for (i = 0; i < size; ++i) { 
     sum += arr[i]; 
    } 

    return sum; 
} 

Если бы я получить его как FP или переключ, я мог бы затем передать его в функцию, которая принимает входные данные как массив?

+0

'sizeof (arr)' - размер указателя, например. 4 или 8. – mch

+0

ОК, я меняю его на число, подобное 3, поскольку оно предназначено только для тестирования. теперь я получаю «Доступ к определению нарушения доступа» –

+0

, сколько элементов имеет 'arr'? – mch

ответ

1

понял это в соответствии с this

мой выход был неправильно Аддин, и моя функция ввода не так.

static AddIn xai_array_try(
    "?xll_array_try", XLL_DOUBLE "O%", 
    "ARRAY.TRY", "Array", 
    "STL", "Test Sum Array." 
    ); 

double WINAPI xll_array_try(int *rows, int *columns, double *arr) { 
#pragma XLLEXPORT 

    int i; 
    double sum = 0; 

    int size = *rows * *columns; 

    for (i = 0; i < size; ++i) { 
     sum += arr[i]; 
    } 

    return sum; 
}