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

本文介绍了一种在VB6中实现数组裁剪的方法,通过API声明和具体实现步骤,给出了一个可用于截取字符串中特定部分的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值