0
BSTR length;
BSTR checkLength = SysAllocString(TEXT("document.getElementsByTagName('tspan').length.toString()"));

HRESULT h = gWebView->stringByEvaluatingJavaScriptFromString(checkLength, &length);
SysFreeString(checkLength);

long longLength;
h = VarI4FromStr(length,0,0,&longLength);
SysFreeString(length);

BSTR index;
long longIndex = longLength - 1;
h = VarBstrFromI4(longIndex,0,0,&index);

最后一行 VarBstrFromI4 将 index(BSTR) 的值更改为我想要的值,但也将 length(BSTR) 的值更改为 index(BSTR) 的值。我一直在尝试做很多选项,包括带有索引和长度的 SysAllocString,但同样的问题仍然存在。

请帮忙。

4

1 回答 1

2

一旦你调用SysFreeString了一个字符串,你就不应该再关心那个字符串了。释放的字符串在内部保存一个地址,用于释放内存,稍后可能由另一个字符串或变量分配。在这种情况下,只是碰巧新字符串与旧字符串位于相同的内存地址。

于 2011-06-08T10:13:41.830 回答