VBMAN.ToolsArray - 数组工具对象
概述
VBMAN.ToolsArray 提供了数组操作的实用功能,包括数组删除元素、解构赋值、切片、查找等。
方法
Remove
删除数组指定索引的元素
vb
Public Function Remove(ByRef Arr As Variant, ByVal Index As Integer) As Boolean参数:
Arr- 数组(按引用传递)Index- 要删除的索引
返回: True=成功, False=失败
说明:
- 将指定索引后面的元素往前移动
- 自动调整数组大小
示例:
vb
Dim arr(3) As String
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
arr(3) = "D"
' 删除索引 1 的元素(B)
VBMAN.ToolsArray.Remove arr, 1
' 结果: A, C, D
Debug.Print arr(0) ' A
Debug.Print arr(1) ' C
Debug.Print arr(2) ' DDeArray
解构数组到变量
vb
Public Sub DeArray(Arr As Variant, ParamArray OutVars())参数:
Arr- 源数组OutVars- 输出变量数组
说明:
- 将数组元素按顺序赋值给变量
- 变量数量不足时只赋值部分元素
示例:
vb
Dim a As String, b As String, c As String
' 解构数组
VBMAN.ToolsArray.DeArray Split("苹果/香蕉/橙子", "/"), a, b, c
Debug.Print a ' 苹果
Debug.Print b ' 香蕉
Debug.Print c ' 橙子
' 只取前两个
Dim x As String, y As String
VBMAN.ToolsArray.DeArray Array(1, 2, 3, 4), x, y
Debug.Print x ' 1
Debug.Print y ' 2GetIndexByValue
根据值查找索引
vb
Public Function GetIndexByValue(Arr As Variant, Value As String) As Long参数:
Arr- 数组Value- 要查找的值
返回: 索引值,未找到返回 -1
示例:
vb
Dim fruits(3) As String
fruits(0) = "apple"
fruits(1) = "banana"
fruits(2) = "orange"
fruits(3) = "grape"
Dim idx As Long
idx = VBMAN.ToolsArray.GetIndexByValue(fruits, "orange")
Debug.Print idx ' 2
idx = VBMAN.ToolsArray.GetIndexByValue(fruits, "watermelon")
Debug.Print idx ' -1IsArrayEmpty
检查数组是否为空
vb
Public Function IsArrayEmpty(Arr As Variant) As Boolean参数:
Arr- 数组
返回: True=空数组, False=非空
示例:
vb
Dim emptyArr() As String
Dim arr(1) As String
arr(0) = "test"
Debug.Print VBMAN.ToolsArray.IsArrayEmpty(emptyArr) ' True
Debug.Print VBMAN.ToolsArray.IsArrayEmpty(arr) ' FalseIsControlArray
检查控件是否为控件数组
vb
Public Function IsControlArray(Ctl As Object) As Boolean参数:
Ctl- 控件对象
返回: True=是控件数组, False=不是
示例:
vb
' 检查 Command1 是否是控件数组
If VBMAN.ToolsArray.IsControlArray(Command1) Then
Debug.Print "Command1 是控件数组"
End IfSliceByteArray
字节数组切片
vb
Public Function SliceByteArray(ByRef Arr() As Byte, ByVal StartPos As Long, Optional ByVal EndPos As Long = -1) As Byte()参数:
Arr- 字节数组StartPos- 开始位置EndPos- 结束位置(-1 表示到末尾)
返回: 切片后的字节数组
示例:
vb
Dim bytes(9) As Byte
' ... 填充数据
' 获取第 2-5 个字节
Dim sliced() As Byte
sliced = VBMAN.ToolsArray.SliceByteArray(bytes, 2, 5)综合示例
示例1: 动态删除数组元素
vb
Private Sub RemoveFromArray()
Dim items As Variant
items = Array("苹果", "香蕉", "橙子", "葡萄")
' 删除 "香蕉"(索引 1)
VBMAN.ToolsArray.Remove items, 1
Dim i As Long
For i = LBound(items) To UBound(items)
Debug.Print items(i)
Next i
' 输出: 苹果, 橙子, 葡萄
End Sub示例2: 批量变量赋值
vb
Private Sub ParsePath()
Dim path As String
path = "C:\\Users\\Admin\\Documents\\file.txt"
Dim drive As String, user As String, folder As String, file As String
' 解构路径
VBMAN.ToolsArray.DeArray Split(path, "\\"), drive, user, folder, file
Debug.Print "驱动器: " & drive ' C:
Debug.Print "用户: " & user ' Users
Debug.Print "文件夹: " & folder ' Admin
Debug.Print "文件: " & file ' Documents
End Sub示例3: 查找和删除
vb
Private Sub RemoveByValue()
Dim items() As String
items = Split("苹果,香蕉,橙子,葡萄", ",")
' 查找索引
Dim idx As Long
idx = VBMAN.ToolsArray.GetIndexByValue(items, "橙子")
If idx >= 0 Then
' 删除找到的元素
VBMAN.ToolsArray.Remove items, idx
MsgBox "已删除橙子"
Else
MsgBox "未找到橙子"
End If
End Sub最佳实践
- 索引检查: 删除或访问数组前先检查索引有效性
- 解构赋值:
DeArray适合处理固定格式的数据解析 - 数组边界: 注意 VB6 数组可以自定义起始索引
- 类型匹配:
GetIndexByValue进行字符串比较,注意类型转换