[转载]VB6里用于裁剪数组的函数

转自(http://www.cnblogs.com/IDqq/archive/2006/04/04/366459.html)

VB.NET里的Array类提供了很多对数组进行拷贝、裁剪等操作的方法。在VB6里如何在保证效率的前提下实现这些功能?本文给出一个用于裁剪数组的函数实现。

1 API声明

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

2 实现:

' 返回byt的从iStart开始,长度是iLen的一段副本
 Private Function SubArray(byt() As Byte, ByVal iStart As Long, ByVal iLen As Long) As Byte()
     Dim buf()           As Byte
 
     ReDim buf(iLen - 1) As Byte
     ' 这里byt(0)和byt(iStart)传进去的是地址
     CopyMemory buf(0), byt(iStart), iLen
 
     SubArray = buf
End Function

3 示例:
下面给出一个用上面的方法截取字符串的小例子,字符串里含有全角和半角字符(全角按2bytes算)

Dim byt()        As Byte
' 使用当前系统ASNI代码页把Unicode字符串转成ASNI码的多字节数组
byt = StrConv("一二三ABC", vbFromUnicode)
' 截取前两byte,再转回Unicode码。对话框显示"一"。
MsgBox StrConv(SubArray(byt, 0, 2), vbUnicode)
原文地址:https://www.cnblogs.com/Spacecup/p/3865054.html