为什么在BCB中一用到(wchar_t *)类型的参数在编译运行时就会出现"Access violation at address ...."

hualianmao 2006-07-29 02:02:10

急请各位高手回答!!急!

参见:

http://community.csdn.net/Expert/TopicView1.asp?id=4913392
...全文
254 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayup234 2006-07-31
  • 打赏
  • 举报
回复
看看
void _fastcall TForm1::FormShow(TObject *Sender)
{
if(Sms1->ConnectModem(WideString("COM1").Detach(),9600)==1)
ShowMessage("成功");
else
ShowMessage("失败");
}
daydayup234 2006-07-31
  • 打赏
  • 举报
回复
1 我是说不要直接WideString("COM1").c_bstr()

用WideString ws;
ws="COM1";
“过渡”

2 另外,Lz也检查下参数 如果是BSTR
这个可能就解决了
WideString("COM1").Detach();


直接的wchar_t *与BSTR用法还是不一样
尽管
typedef /* [wire_marshal] */ OLECHAR *BSTR;
typedef WCHAR OLECHAR;
typedef wchar_t WCHAR;

hualianmao 2006-07-29
  • 打赏
  • 举报
回复
已经试过了:

对于其中的wchar_t *类型的参数曾试用多种转换方式:

L"COM1"

WideString("COM1").c_bstr()
...
但问题依旧。
daydayup234 2006-07-29
  • 打赏
  • 举报
回复
WideString ws;
ws="COM1";
//使用wchar_t *时如下
ws.c_bstr();

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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