CComVariant变量不够大

你的OPPA 2015-08-13 01:52:05
我需要在MFC项目中调用JS的函数,获取网页的源码。

CComVariant vaResult;
hr = spScript->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, &dispparams, &vaResult, &execpInfo, &nArgErr);

由于源码比较多,变量vaResult存不下,该怎么办?
我之前用

CComVariant *vaResult = (CComVariant*)malloc(100*sizeof(CComVariant));

但是在调试的时候发现vaResult的值是错误的,而且在赋值的时候出现赋值不正确。
求大神指点···
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
你的OPPA 2015-08-17
  • 打赏
  • 举报
回复
有没有人知道怎么解决啊? 顶···
你的OPPA 2015-08-17
  • 打赏
  • 举报
回复
引用 7 楼 Saleayas 的回复:
看看你的代码,你确定不是因为字符串中有 \0 引起的。使用 BSTR 的长度测试一下。 看看你返回的代码中是否有类似中文这样的字符。 看看你的返回的字符串的编码。 最好使用 UTF-8 .
解决了,CComVariant是有大小限制的 我用
CComBSTR bstrRet(10000);
CComVariant vaResult(bstrRet);
这样就好了
你的OPPA 2015-08-17
  • 打赏
  • 举报
回复
引用 7 楼 Saleayas 的回复:
看看你的代码,你确定不是因为字符串中有 \0 引起的。使用 BSTR 的长度测试一下。 看看你返回的代码中是否有类似中文这样的字符。 看看你的返回的字符串的编码。 最好使用 UTF-8 .
解决了,CComVariant是有大小限制的 我用
CComBSTR bstrRet(10000);
CComVariant vaResult(bstrRet);
这样就好了
Saleayas 2015-08-17
  • 打赏
  • 举报
回复
看看你的代码,你确定不是因为字符串中有 \0 引起的。使用 BSTR 的长度测试一下。 看看你返回的代码中是否有类似中文这样的字符。 看看你的返回的字符串的编码。 最好使用 UTF-8 .
你的OPPA 2015-08-14
  • 打赏
  • 举报
回复
引用 2 楼 Saleayas 的回复:
怎么可能你,如果你返回源码,那么 varResult 的 VT 就是 VT_BSTR. 那么 V_BSTR(&varResult) 就是指向返回的源码的字符串。 数据和 VARIANT 类型没有关系。
但是,vaResult变量只取到一部分源码,而且每次取出的最大字符串是1046字节。
Saleayas 2015-08-13
  • 打赏
  • 举报
回复
怎么可能你,如果你返回源码,那么 varResult 的 VT 就是 VT_BSTR. 那么 V_BSTR(&varResult) 就是指向返回的源码的字符串。 数据和 VARIANT 类型没有关系。
赵4老师 2015-08-13
  • 打赏
  • 举报
回复
CComVariant *vaResult = new CComVariant[100]; CComVariant是class,不是一段内存,适合用new(内部自动调用构造函数),不适合用malloc(内部不调用构造函数) 我猜。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧