VB中对string array快速插入、删除某个元素的办法

 

这是很实用的两个函数,迟早会用到的,作为资源储备。以下是代码:

' 作为测试,添加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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值