Я ищу писать Excel 2007/2010 XLL с помощью Excel 2007 XLL SDK в VS 2010. Моя функция может возвращать Varios строки:Возвращение юникод строки из функции XLL
__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);
Reg = GetRegion(DV.p, DV.t);
xResult.val.str = L"";
if (Reg == 0) {xResult.val.str = L"\027Ошибка диапазона параметров";debugPrintf("Reg = 0");}
if (Reg == 1) {xResult.val.str = L"\004Вода";debugPrintf("Reg = 1");}
if (Reg == 2) {xResult.val.str = L"\014Перегретый пар";debugPrintf("Reg = 2");}
if (Reg == 3) {xResult.val.str = L"\017Критическая смесь";debugPrintf("Reg = 3");}
if (Reg == 4) {xResult.val.str = L"\014Насыщенный пар";debugPrintf("Reg = 4");}
if (Reg == 5) {xResult.val.str = L"\019Сверхперегретый пар";debugPrintf("Reg = 5");}
if (Reg != 0) MathVater();
return(LPXLOPER12) &xResult;
}
Когда строковые значения возврата для преуспевания это значение - 'Ошибка диапазона параме' - не вся первая строка. Но я рассказываю длину строки os с «\ 027» в начале строки. Где я ошибаюсь?
Edit 1:
I've changed code to:
if (Reg == 0) {xResult.val.str = L"\035Ошибка диапазона параметров";debugPrintf("Reg = 0");}
if (Reg == 1) {xResult.val.str = L"\012Вода";debugPrintf("Reg = 1");}
if (Reg == 2) {xResult.val.str = L"\022Перегретый пар";debugPrintf("Reg = 2");}
if (Reg == 3) {xResult.val.str = L"\025Критическая смесь";debugPrintf("Reg = 3");}
if (Reg == 4) {xResult.val.str = L"\022Насыщенный пар";debugPrintf("Reg = 4");}
if (Reg == 5) {xResult.val.str = L"\027Сверхперегретый пар";debugPrintf("Reg = 5");}
Но у меня есть это:
Что вы думаете о?
Edit 2: Моя функция Тип подписи:
{
L"PTstate", // Function name/ordinal
L"UBB", // Func signature type
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
}
Кто голосует - комментарий для чего? – amaranth