我写的接口都是在VBA环境中调用:
这样定义一个函数 DISP_FUNCTION(CExtFuncs, "GetSubsystems", _GetSubsystems, VTS_VARIANT, VTS_BSTR)
问题1:如何让返回值是一个字符串数组?
问题2:一般返回字符串的时候都要使用SysAllocString来分配内存,但是这个分配的内存是否需要我来释放?正常来说原则是谁分配谁释放,但是这种情况下,我并不知道分配的内存什么时候用完?而且我尝试过释放似乎分配的内存已经释放了?谁知道麻烦指点一下。
这样定义一个函数 DISP_FUNCTION(CExtFuncs, "GetSubsystems", _GetSubsystems, VTS_VARIANT, VTS_BSTR)
问题1:如何让返回值是一个字符串数组?
问题2:一般返回字符串的时候都要使用SysAllocString来分配内存,但是这个分配的内存是否需要我来释放?正常来说原则是谁分配谁释放,但是这种情况下,我并不知道分配的内存什么时候用完?而且我尝试过释放似乎分配的内存已经释放了?谁知道麻烦指点一下。
VARIANT CExtFuncs::_GetMapVariantValue(LPCTSTR sNodeName, const VARIANT FAR& vPropName)
{
return GetIODataValue(sTagName, sPropName);
}
上面是我的脚本函数,用户在使用的时候会在一个VBA脚本编辑环境中调用次函数,那么我怎么知道函数什么时候返回?
var data = XXX._GetMapVariantValue()
1.“返回值用VARIANT类型,然后先用CComSafeArray保存你的字符串数组,然后再转成VARIANT”具体应该如何做?
2.返回后我何时释放为返回值分配的内存?