首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

呼叫妖哥,2010下操作excel的代码到XE5下边不行了,似乎是传值时用AnsiString的c_str()不行了

2013-12-10 
呼叫妖哥,2010下操作excel的代码到XE5下面不行了,似乎是传值时用AnsiString的c_str()不行了以前因为以下语

呼叫妖哥,2010下操作excel的代码到XE5下面不行了,似乎是传值时用AnsiString的c_str()不行了
以前因为以下语句不行:

ActiveSheet.EX_PG("Cells").EX_PG("Item",2,nFinalCol).EX_PS("Value","Test");

所以改成用AnsiString传值:
ActiveSheet.EX_PG("Cells").EX_PG("Item",2,nFinalCol).EX_PS("Value",asValue.c_str());

在2010里面一直用的没问题,但到了XE5就提示不正确的参数。
用以下步骤将其转成char*也不行:
needBytes = WideCharToMultiByte(CP_ACP,0,pWideChar,-1, NULL,0, NULL, NULL);
pValue = new char[needBytes + 1];
ZeroMemory(pAnsi, needBytes + 1);
WideCharToMultiByte(CP_ACP, 0, pWideChar, -1, pAnsi,needBytes, NULL, NULL);

转了后这么调用还是不行
ActiveSheet.EX_PG("Cells").EX_PG("Item",2,nFinalCol).EX_PS("Value",pValue);

抓狂,妖哥这个应该怎么破?
[解决办法]
WideString类就是专门为兼容COM而生. 所以, 在OLE代码中, 涉及到字符串的地方, 用WideString即可.

热点排行