读书人

呼叫妖哥2010下操作excel的代码到XE

发布时间: 2013-12-10 15:05:55 作者: rapoo

呼叫妖哥,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即可.

读书人网 >C++ Builder

热点推荐