描述:
函数说明为:
HRESULT IDoc::Read ( const _variant_t & PathOrData, const _variant_t & Password )
如何把一个字符串(文件路径, char* filename)或一块内存数据(文件内容,另外有一个长度信息,就是void* data, int length)赋给_variant_t类型。
反过来,如何从_variant_t类型得到一块内存数据(包括长度)。
解决方案1:
point没有初始化?
解决方案2: 初始化的时候就可以阿。
string str = _T("HEHHE");
_variant vt;
vt = str;
IDocPtr m_doc;//这里最好写成: IDocPtr m_doc = NULL;
解决方案4: IDocPtr m_doc;
HRESULT hr = m_doc.CreateInstance(__uuidof(Doc));
if(FAILED(hr))
{
//看看成功了没有
}
_bstr_t fname(infilename); // const char* infilename
_variant_t varFName(fname);
ret = m_doc->Read(varFName); //这里跟进去f11看看到底是varFName的问题还是什么问题进去后看看varFName的值对不对!
使用CComVariant啊
CComVariant vName("test");
然后再赋值给_variant_t变量
看起来你没有用_bstr_t?
解决方案7: 很好解决!
这样写:
_bstr_t fname(filename);
_variant_t varFName(fname);
因为_bstr_t可以得到filename的长度通过,fname.length();
_bstr_t是BSTR的封装,它可以记录字符串长度!哈哈!没问题的!
反过来怎么用就不用我说了!
VT_BSTR
VT_BYREF
您可能想查找下面的文章:
- 使用VARIANT作为参数时的问题?
- 怎么把VARIANT类型的数据转换成HIMAGELIST类型啊?
- 求助:如何取得com组件返回VARIANT类型的返回值?
- 谁能告诉我CComBstr和CComVariant之间怎么转换,我想把任何变量都转化为BSTR怎么做?
- VARIANT内存越界
- 为何用VariantChangeTypeEx将VARIANT时间变量转换为字符串变量只能转换一部分?
- 急!请教各位大侠,如何在COM组件方法中返回VARIANT或ARRAY?
- COM定义接口,如何传递COLEVariant类型的参数?
- _variant_t转换为CString出错
- _variant_t的=操作符