Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ViualBasic ->正文

浅议VB6字节数组和字符串的相互转换

来源:Linuxdby.com 作者:Webmaster 时间:2007-06-05 点击: [收藏] [投稿]


->DimsAPIReturnasstring

SAPIReturn=Space$(256)

SAPIReturn=API_Function(…)->

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

->PublicFunctionCStringToVBString(psCStringAsString)Asstring

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

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

 dimsReturnasstring
 dimiNullCharPosAsInteger

 iNullCharPos=InStr(psCString,vbNullChar)
 ifiNullCharPos>0then
  sReturn=left(psCString,iNullCharPos-1)
 else
  sReturn=pscstring
 endif
 CStringToVBString=sReturn
Endfunction->

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

->PublicSubMultiCStringToStringArray(psMultiCStringAsString,psaStrings()AsString)

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

 DimiNullPosAsInteger
 DimiPrevPosAsInteger
 DimiIdxAsInteger

 '初始化字符串数组

 iIdx=0
 ReDimpsaStrings(0ToiIdx 1)
 psaStrings(iIdx 1)=""
 Do
  '
  iNullPos=InStr(iPrevPos 1,psMultiCString,vbNullChar)
  IfiNullPos>iPrevPos 1Then
   '把找到的C字符串赋值给字符串数组
   psaStrings(iIdx)=Mid$(psMultiCString,(iPrevPos 1),((iNullPos-1)-iPrevPos))
   iIdx=iIdx 1
   ReDimPreservepsaStrings(0ToiIdx)
   iPrevPos=iNullPos
  Else
   '找到了两个Null字符,去掉最后一个,然后退出
   ReDimPreservepsaStrings(0ToiIdx-1)
   ExitDo
  EndIf
 Loop
EndSub->

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

  注意:

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

->OptionExplicit->

五、小结

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



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:VB“变态”用法之有用技术和没用指针   下一篇:用VisualBasic开发绿色软件的探讨

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号