VB中对string array快速插入、删除某个元素的办法
来源:互联网 发布:中国上市装饰公司知乎 编辑:程序博客网 时间:2024/05/16 05:29
这是很实用的两个函数,迟早会用到的,作为资源储备。以下是代码:
'作为测试,添加1个按钮,两个listbox
Private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (dest As Any, source As Any, _
ByVal numBytes As Long)
Sub InsertStringItem(strArr() As String, ByVal index As Long, _
ByVal newItem As String)
Dim lastItem As Long, saveAddr As Long
lastItem = UBound(strArr)
saveAddr = StrPtr(strArr(lastItem))
CopyMemory ByVal VarPtr(strArr(index + 1)), ByVal _
VarPtr(strArr(index)), (lastItem - index) * 4
CopyMemory ByVal VarPtr(strArr(index)), saveAddr, 4
strArr(index) = newItem
End Sub
Private Sub DeleteStringItem(strArr() As String, ByVal index As Long)
Dim lastItem As Long, saveAddr As Long
lastItem = UBound(strArr)
saveAddr = StrPtr(strArr(index))
CopyMemory ByVal VarPtr(strArr(index)), ByVal VarPtr(strArr(index + 1)), (lastItem - index) * 4
CopyMemory ByVal VarPtr(strArr(lastItem)), saveAddr, 4
strArr(lastItem) = vbNullString
End Sub
Private Sub Command1_Click()
Dim a() As String
ReDim a(5) '
a(0) = "1 黄河远上"
a(1) = "2 白云一片"
a(2) = "3 孤城万仞山"
a(3) = "4 羌笛何需怨"
a(4) = "5 杨柳春风"
a(5) = "6 不渡玉门关"
'插入元素的时候先redim,再调用InsertStringIte
ReDim Preserve a(UBound(a) + 1)
InsertStringItem a, 1, "mc"
'测试输出
Dim i As Long
For i = 0 To UBound(a)
List1.AddItem "a(" + CStr(i) + ")=" + a(i)
Next
'删除元素的时候,先调用DeleteStringItem,再redim
DeleteStringItem a, 2
ReDim Preserve a(UBound(a) - 1)
'测试输出
For i = 0 To UBound(a)
List2.AddItem "a(" + CStr(i) + ")=" + a(i)
Next
End Sub
Private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (dest As Any, source As Any, _
ByVal numBytes As Long)
Sub InsertStringItem(strArr() As String, ByVal index As Long, _
ByVal newItem As String)
Dim lastItem As Long, saveAddr As Long
lastItem = UBound(strArr)
saveAddr = StrPtr(strArr(lastItem))
CopyMemory ByVal VarPtr(strArr(index + 1)), ByVal _
VarPtr(strArr(index)), (lastItem - index) * 4
CopyMemory ByVal VarPtr(strArr(index)), saveAddr, 4
strArr(index) = newItem
End Sub
Private Sub DeleteStringItem(strArr() As String, ByVal index As Long)
Dim lastItem As Long, saveAddr As Long
lastItem = UBound(strArr)
saveAddr = StrPtr(strArr(index))
CopyMemory ByVal VarPtr(strArr(index)), ByVal VarPtr(strArr(index + 1)), (lastItem - index) * 4
CopyMemory ByVal VarPtr(strArr(lastItem)), saveAddr, 4
strArr(lastItem) = vbNullString
End Sub
Private Sub Command1_Click()
Dim a() As String
ReDim a(5) '
a(0) = "1 黄河远上"
a(1) = "2 白云一片"
a(2) = "3 孤城万仞山"
a(3) = "4 羌笛何需怨"
a(4) = "5 杨柳春风"
a(5) = "6 不渡玉门关"
'插入元素的时候先redim,再调用InsertStringIte
ReDim Preserve a(UBound(a) + 1)
InsertStringItem a, 1, "mc"
'测试输出
Dim i As Long
For i = 0 To UBound(a)
List1.AddItem "a(" + CStr(i) + ")=" + a(i)
Next
'删除元素的时候,先调用DeleteStringItem,再redim
DeleteStringItem a, 2
ReDim Preserve a(UBound(a) - 1)
'测试输出
For i = 0 To UBound(a)
List2.AddItem "a(" + CStr(i) + ")=" + a(i)
Next
End Sub
- VB中对string array快速插入、删除某个元素的办法
- Flex 中Array的插入删除元素
- Flex 中Array的插入删除元素
- Flex 中Array的插入删除元素
- 使用Array对数组元素删除其中某个元素
- js删除Array数组中的某个元素
- 对数组排序并删除含有某个字母的元素
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- array数组扩展方法一、--删除数组中某个元素,并且修改下标,返回新数组
- 在vector中,怎样删除某个指定值的元素
- js中,删除数组中指定的某个元素
- python中删除某个元素的3种方法
- C++从string中删除所有的某个特定字符
- 精通Flex 3.0――4.5.2 向Array中插入和删除元素
- Oracle中快速删除某个用户下的所有…
- JScript内置对象Array中元素的删除问题
- C#循环删除List中某个元素
- js需要删除页面中某个元素
- Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码
- Singleton设计模式的C#实现(转载)
- 微软BizTalk服务使得SOA简单化
- Internet Service Bus
- 金额转换成大写(从Sql Server版转换成的C#版)
- VB中对string array快速插入、删除某个元素的办法
- SQL Server2000 解密存储过程
- 15 个最酷的 Firefox 技巧
- BizTalk Server 2006 Web 服务
- 多附件上传页面代码
- 村规(春天花花同学会)
- 1917
- linux的作业控制
- J2EE学习经验交流