Тип подписи аргументов функции XLL

я привык этот пример сборки XLL для Excel с использованием C ++.
Я создал собственную функцию, которая принимает 2 двойных аргумента и возвращает строку:

 __declspec(dllexport) LPXLOPER12 WINAPI PTstate (double P, double T)
{
static XLOPER12 xResult;
xResult.xltype = xltypeStr;
debugPrintf("P = %d\n", P);
debugPrintf("T = %d\n", T);
Calculate(P, T);
xResult.val.str = L"\013Calculated";
return(LPXLOPER12) &xResult;
}

Определение функции:

{
L"PTstate",                 // Function name/ordinal
L"UBB",                    // Func signature type **U - XLOPER12, BB - P and T double**
L"PTstate",                 // Func name in Func wizard
L"P, T",             // Arg name in Func wizard
L"1",                      // Function type
L"SimpleXll2007",           // Category in Func wizard
L"",                       // Shortcut (commands only)
L"",                       // Help topic
L"",  // Func help in Func wizard
L"",          // Arg help in Func wizard
L""           // Arg help in Func wizard
},

Если P = 100,345 T = 200,567, я получаю P = 2061584302 и T = -584115552 на выходе — я использовал функцию debugPrintf.
Когда функция args длинная:

__declspec(dllexport) LPXLOPER12 WINAPI PTstate (long P, long T)

и подпись функции «UJJ» Я пытаюсь P = 100,345 T = 200,567 Я получаю P = 100 и T = 201.

Итак, какую правильную подпись функции я должен использовать?

1

Решение

Похоже, запятая интерпретируется как десятичная точка.

1

Другие решения

Правильный путь — используйте точки останова для просмотра значений переменных.

0