VB String处理

linlinlinxi007 2013-03-12 02:36:36
各位大神。我用C++的编写的DLL,导出函数的某个参数类型为const char *info
用VB的方式调用DLL。函数参数声明为ByVal info As String
用该方式,常规的内容是可以得到的。
如果DLL返回的内容info。中间包含空字符。则只能得到空字符前的那一部分内容
有什么办法,可以得到全部内容么?(即空字符后的内容也要获取到)
...全文
349 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2013-03-13
  • 打赏
  • 举报
回复
参考 API 函数 GetWindowTextLength 和 GetWindowText。
1)用 GetWindowTextLength 取得数据大小。
2)调用者分配缓冲区,可以比数据大、也可以比数据小(字符串没有完整性的限制,允许截断)。
3)调用 GetWindowText,传入缓冲区指针和缓冲区大小。
4)GetWindowText 返回实际复制的数据大小。
linlinlinxi007 2013-03-13
  • 打赏
  • 举报
回复
wangmu7206大哥 你的意思是用ByVal info As Byte的方式? 我初步试过也是不行的。
贝隆 2013-03-13
  • 打赏
  • 举报
回复
用ByRef info as byte 读出后用strconv转化
捧剑者 2013-03-12
  • 打赏
  • 举报
回复
字节数组?。。
linlinlinxi007 2013-03-12
  • 打赏
  • 举报
回复
那应该用什么办法呢?大哥,求指教呀!!! (VB还是我这两天自学的。很多都不会。)
of123 2013-03-12
  • 打赏
  • 举报
回复
那就更不应该用 String 类型了。
linlinlinxi007 2013-03-12
  • 打赏
  • 举报
回复
Read内部我目前还没做任何处理呢。我就直接调试看info 的内容。发现它确实从第一个\x00处就截断了,所以数据不对。。。不知道有没有什么办法可以全部获取出来??? (\x00这样的数据其实是bmp文件的流信息,我是要获取出来然后显示图片的)
of123 2013-03-12
  • 打赏
  • 举报
回复
Read 过程内部怎么做的?直接接收的一定不能是字符串,否则必然从第一个 0x00 处截断。另外,0x00 这样的东西你打算在字符串里如何显示?
linlinlinxi007 2013-03-12
  • 打赏
  • 举报
回复
of123大哥 其实我是传递函数给DLL的。(回调函数的方式) 所以没有传参 VB部分 Public Delegate Sub Read111(ByVal info As String, ByVal len As Integer) Public Declare Sub SetVerificationCallBack Lib "WES.dll" (ByVal ret As Read111) Public Sub Read(ByVal info As String, ByVal len As Integer) 方法体 ... (此处DLL传递过来的内容中是类似“123\x00\x01\x00\x41”的数据。此处info只能获取到内容“123”我想获取全部的内容) End Sub 调用DLL方法SetVerificationCallBack SetVerificationCallBack(AddressOf Read)
of123 2013-03-12
  • 打赏
  • 举报
回复
函数参数声明为 ByRef info As Byte 调用的时候,传参 info(0) 字符串是以 Null 为结束标志的。

7,763

社区成员

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

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