CB写的ActiveX,返回参数为BSTR类型,长度为70k多时报错,Access   violation。如何解决?
BSTR有长度限制吗??
请高手指点,谢谢! 

解决方案 »

  1.   

    方法如下:Value长度为70k+时,调用报错Access violation。STDMETHODIMP TAPImpl::GetValue(BSTR XMLPath, BSTR* Value)

      *Value = WideString(GetXMLNodeValue(XML,WideString(XMLPath));  return S_OK;
    }
      

  2.   

    看下是否是GetXMLNodeValue函数报错,BSTR理论值最长是2GB
      

  3.   

    自己解决了,返回值用LPSTR。长度超过255,用LPSTR做参数。STDMETHODIMP TAPImpl::GetValue(BSTR XMLPath, LPSTR* Value)
    {
      char s[102400];
      String str = GetXMLNodeValue(XML,WideString(XMLPath);
      strcpy(s,str.c_str());
      *Value = s;
      return S_OK;
    }