vb中重定義數(shù)組的下標(biāo)可以用redim<保留數(shù)據(jù)請(qǐng)帶上Preserve >,刪除整個(gè)數(shù)組是erase<在靜態(tài)數(shù)組中置空在動(dòng)態(tài)數(shù)組中刪除整個(gè)數(shù)組>
刪除一個(gè)元素的常規(guī)方法是循環(huán)重組合..比如數(shù)組test里有100個(gè)元素(0~99),我想要?jiǎng)h除第10個(gè),那么我必須把數(shù)組的0~9,11~99這些項(xiàng)全部重新整合成0~98的形式,這樣一個(gè)循環(huán)不可避免,難道我們一定要做循環(huán)嗎,?其實(shí)不用!太沒(méi)效率了
vb中提供了好東東,copymemory,正如其名,復(fù)制內(nèi)存,。,。
我們可以換個(gè)思路,test(10)既然是廢棄的不要的,那何不直接把test(11)~test(99)的內(nèi)存覆蓋到test(10)上呢,最后再把下標(biāo)減一就行了
于是乎出來(lái)了:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Dim Test%()
Private Sub Command1_Click()
Dim i%
For i = 0 To UBound(Test)
If i = 10 Then
CopyMemory Test(10), Test(11), 178
ReDim Preserve Test(UBound(Test) - 1)
End If
Next
MsgBox UBound(Test)
MsgBox Test(98)
End Sub
Private Sub Form_Load()
Dim i%
For i = 0 To 99
ReDim Preserve Test(i)
Test(i) = i
Next
|