,VB   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,VB
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VB > 正文
浅议VB6字节数组和字符串的相互转换
[文章信息]
作者:朱先中
时间:2005-04-19
出处:天极网
责任编辑:方舟
[文章导读]
数据类型转换在编程中经常用到,VB6提供了一整套类型转换的函数
advertisement
热点推荐
· VB实现SQL Server 2000存储过程调用
· Java解析网络数据流的三种特殊方法
· 多媒体教程:网页表单文本域类型
· 体验V5E地形编辑:整体控制
· 打造完美可随意安装的WinXP镜像
[正文]

上一页  1 2  

  四、 字符串转换成VB字符串

  当我们在VB中调用Win32 API函数时,如果函数的返回值是一个字符串,那一般有如下三种情况:

  1. 函数预先要求你提供一个有固定空间的字符串,以供存储函数的返回值。

  2. 函数的返回是一个以Null结尾的C字符串,而不是正规的VB字符串。

  3. Win32 API函数有时候会返回另一种类型的字符串。这种类型的字符串在单个缓冲区内保存了多个字符串值,每个值之间用Null隔开,结尾的是两个Null,一个Null是最后一个字符串值的结尾符,另一个Null是整个字符串的结尾符。这其实就是我们通常在C中遇到的字符串数组。

  第一种情况很好办,只无原则预先定义好一个空间足够大的字符串,然后把API函数的返回值赋于这个字符串就可以了。例如,如果你已经知道函数返回值最多不会走过256个字符,可以这样编码如下:

Dim sAPIReturn as string

SAPIReturn=Space$(256)

SAPIReturn=API_Function(…)

  对于第二和第三种情况,就必须把返回的C字符串成标准的VB字符串。下面这个函数CStringToVBString把一个以Null结尾的C字符串成VB字符串。

Public Function CStringToVBString(psCString As String) As string

 ‘参数psCString是一个待转换的C字符串

 ‘函数返回Null左边所有的字符

 dim sReturn as string
 dim iNullCharPos As Integer

 iNullCharPos=InStr(psCString,vbNullChar)
 if iNullCharPos >0 then
  sReturn =left(psCString, iNullCharPos -1)
 else
  sReturn =pscstring
 end if
 CStringToVBString=sReturn
End function

  下面这个过程把一个含有多个C字符串的缓冲区转换成一个字符串数组。

Public Sub MultiCStringToStringArray(psMultiCString As String, psaStrings() As String)

 '参数psMultiCString是待转换的多个C字符串
 '参数psaStrings是返回的VB字符串数组,调用之前它必须是一个动态的空数组
 '

 Dim iNullPos As Integer
 Dim iPrevPos As Integer
 Dim iIdx As Integer

 '初始化字符串数组

 iIdx = 0
 ReDim psaStrings(0 To iIdx + 1)
 psaStrings(iIdx + 1) = ""
 Do
  '
  iNullPos = InStr(iPrevPos + 1, psMultiCString, vbNullChar)
  If iNullPos > iPrevPos + 1 Then
   '把找到的C字符串赋值给字符串数组
   psaStrings(iIdx) = Mid$(psMultiCString, (iPrevPos + 1), ((iNullPos - 1) - iPrevPos))
   iIdx = iIdx + 1
   ReDim Preserve psaStrings(0 To iIdx)
   iPrevPos = iNullPos
  Else
   '找到了两个Null字符,去掉最后一个,然后退出
   ReDim Preserve psaStrings(0 To iIdx - 1)
   Exit Do
  End If
 Loop
End Sub

  当调用Win32 API函数时,使用这两个简单的函数,你可以消除很多冗余的代码,加快开发步伐。

  注意:

  当你为API的返回值预先分配字符串的空间时,一定不要忘了空间内必须包含Null结束符。另外,建议你在使用API时,最好对每个变量都进行声明,加上下面这句代码:

Option Explicit

  五、 小结

  VB6中字节数组和字符串的相互转换是编程中,尤其是新手使用中最为头疼的问题。本文归纳了软件开发过程中使用二者的典型情况及其应该注意的问题,供参考。不当之处还请读者批评指正。

上一页  1 2  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,VB相关内容,VB焦点新闻
  • VB“超频”秘籍之隐藏的Variant变量
  • VB中使用水晶报表编程的一种简单方法
  • 提高Visual Basic访问数据库的效率
  • 利用Visual Basic实现木马攻击
  • 用Visual Basic开发绿色软件的探讨
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,VBAdvertisement