WideString传入COM就丢了很多? ( 积分: 50 )

  • 主题发起人 主题发起人 fyt234
  • 开始时间 开始时间
F

fyt234

Unregistered / Unconfirmed
GUEST, unregistred user!
我用VC作了COM实现:
HRESULT SaveInfo([in]BSTR InfoStr,[in]BSTR DBConn,[out,retval]BSTR* NewTrbOID);
用Delphi调用时,传入参数Widestring型,InfoStr是从Socket接收的,例如:
'?'#1#9'安全线'#0#3#4'-'#$10'['#9#5#0#1#$B'其它'#0#$12'晋; ;'#0#0
当传入COM时就只剩"?'#1#9'安全线"l ,后面都没有了;
如果InfoStr变为"我是Delphi 哈哈哈 hhhh",就可以完整的传入COM.
为什么呢????
 
我用VC作了COM实现:
HRESULT SaveInfo([in]BSTR InfoStr,[in]BSTR DBConn,[out,retval]BSTR* NewTrbOID);
用Delphi调用时,传入参数Widestring型,InfoStr是从Socket接收的,例如:
'?'#1#9'安全线'#0#3#4'-'#$10'['#9#5#0#1#$B'其它'#0#$12'晋; ;'#0#0
当传入COM时就只剩"?'#1#9'安全线"l ,后面都没有了;
如果InfoStr变为"我是Delphi 哈哈哈 hhhh",就可以完整的传入COM.
为什么呢????
 
难道widestring不能含有'#0'字符???
 
怀疑是这个问题,编译器认为你已经结束了,所以就忽略后面的字符了
 
帮顶

--------签名档---------------------------

惊爆开源站

http://www.source520.com

80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
 
那就替换成别的字符吧
 
用ReplaceString是不能替换这个字符的,搞不懂啊
 
用 array[0..length] of char装入然后循环试试
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
620
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部