->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时,最好对每个变量都进行声明,加上下面这句代码:
五、小结 VB6中字节数组和字符串的相互转换是编程中,尤其是新手使用中最为头疼的问题。本文归纳了软件开发过程中使用二者的典型情况及其应该注意的问题,供参考。不当之处还请读者批评指正。->
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:
VB“变态”用法之有用技术和没用指针 下一篇:
用VisualBasic开发绿色软件的探讨
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】