Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 参数帮助字符串丢失函数向导中的最后一个字符(C+;+;XLL)_C++_Xll - Fatal编程技术网

C++ 参数帮助字符串丢失函数向导中的最后一个字符(C+;+;XLL)

C++ 参数帮助字符串丢失函数向导中的最后一个字符(C+;+;XLL),c++,xll,C++,Xll,在注册XLL函数时,我有一个稍微奇怪的问题(虽然不是终端)。我使用xlfRegister调用,通常使用参数列表,但有两个问题: 函数描述和参数帮助字符串都附加了一个句号(“.”) 我似乎丢失了最后一个帮助字符串中的最后一个(可能是最后两个)字符 还有其他人遇到过这种情况吗?我担心在构造临时字节计数字符串时会发生意外情况。现在这不是一个大问题,如果后来发现我没有正确传递字符串,可能会产生一些意想不到的后果。我正在使用64位Excel,并编译一个64位xll(带有/D“_MBCS”编译器标志)。我将

在注册XLL函数时,我有一个稍微奇怪的问题(虽然不是终端)。我使用xlfRegister调用,通常使用参数列表,但有两个问题:

  • 函数描述和参数帮助字符串都附加了一个句号(“.”)
  • 我似乎丢失了最后一个帮助字符串中的最后一个(可能是最后两个)字符
  • 还有其他人遇到过这种情况吗?我担心在构造临时字节计数字符串时会发生意外情况。现在这不是一个大问题,如果后来发现我没有正确传递字符串,可能会产生一些意想不到的后果。我正在使用64位Excel,并编译一个64位xll(带有/D“_MBCS”编译器标志)。我将Excel4v()调用与LPXLOPER一起使用,而不是与LPXLOPER12s一起使用Excel12v

    这是我的注册电话:

        Excel(xlfRegister, 0, 15, pDll,TempStr2("myUDF"),
           TempStr2("PCCPPP"),
           TempStr2("myUDF"),
           TempStr2("Param1,Param2,Param3,Param4,Param5"),
           TempStr2("1"),
           TempStr2("My UDF functions"),
           TempStr2(""), 
           TempStr2(""),
           TempStr2("Returns a secret"),
           TempStr2("Function Parameter 1"),
           TempStr2("Function Parameter 2"),
           TempStr2("Function Parameter 3"),
           TempStr2("Function Parameter 4"),
           TempStr2("Function Parameter 5"));
    
    TempStr2函数(取自SDK中修改后的framewrk.cpp)实现为:

    LPXLOPER TempStr2(LPSTR lpstr)
    {
        LPXLOPER lpx;
    
        lpx = (LPXLOPER)GetTempMemory(sizeof(XLOPER));
    
        int len = __min(255, lstrlen(lpstr));
        lpx->xltype = xltypeStr;
        lpx->val.str = GetTempMemory(len + 1);
    
        strncpy(lpx->val.str + 1, lpstr, len);
        lpx->val.str[0] = (BYTE)len;
        return lpx;
    }
    
    UDF工作正常,但由于迂腐,这是函数向导中显示的内容:

    前四个参数字符串附加了一个句号(.),该句号不在原始字符串中。没有太大的困难(这可能是故意的……如果我在琴弦上画上自己的句号,第二个就不会出现了)。如果我查看向导中的其他函数,所有参数帮助字符串似乎都以句号结尾,因此这可能是故意的

    最后一个字符串“Function Parameter 5”丢失了最后一个字符('5'),并且没有额外的句号,这表明我可能丢失了两个字符


    我很想听听关于可能发生的事情的任何建议。

    啊哈。。。我在已知SDK问题列表中发现:

    “函数向导中的参数说明字符串截断

    pxArgumentHelp1参数和xlfRegister函数的所有后续参数都是与XLL函数的参数相对应的可选字符串。函数向导显示这些参数以在“参数构造”对话框中提供帮助。有时Excel会将与最终参数相对应的字符串截断一到两个c在对话框中显示时使用字符。可以通过添加额外的“空字符串”作为函数注册的最后一个“参数帮助”参数来避免此问题

    所以,我将继续