Translate

Thứ Hai, 17 tháng 9, 2012

Loại bỏ phần tử đầu trong mảng

Remove first items in an numeric array



Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

' truongphu@caulacbovb.com

Private Sub Command1_Click()
    Dim AA(9) As Byte ' 0 1 2 3 4 5 6 7 8 9
    Dim Z$
    For i = 0 To 9
        AA(i) = i
        Z = Z & " " & AA(i)
    Next
    MsgBox Z

    Dim BB(8) As Byte ' Bo elements 0
    Z = ""
    CopyMemory BB(0), AA(1), 9 '(9*1)
    For i = 0 To 8
        Z = Z & " " & BB(i)
    Next
    MsgBox Z
End Sub

Private Sub Command2_Click()
    Dim AA(9) As Byte
    Dim Z$
    For i = 0 To 9
        AA(i) = i
        Z = Z & " " & AA(i)
    Next
    MsgBox Z
    
    Dim BB(4) As Byte ' Bo các element 0 1 2 3 4
    Z = ""
    CopyMemory BB(0), AA(5), 5 ' (5*1)
    For i = 0 To 4
        Z = Z & " " & BB(i)
    Next
    MsgBox Z
End Sub

Private Sub Command3_Click()
    Dim AA(9) As Integer  ' 10 elements
    Dim Z$
    For i = 0 To 9
        AA(i) = i
        Z = Z & " " & AA(i)
    Next
    MsgBox Z

    Dim BB(8) As Integer ' Bo elements 0
    Z = ""
    CopyMemory BB(0), AA(1), 9 * 2
    For i = 0 To 8
        Z = Z & " " & BB(i)
    Next
    MsgBox Z
End Sub

Private Sub Command4_Click()
    Dim AA(9) As Integer
    Dim Z$
    For i = 0 To 9
        AA(i) = i
        Z = Z & " " & AA(i)
    Next
    MsgBox Z
    
    Dim BB(4) As Integer ' Bo các element 0 1 2 3 4
    Z = ""
    CopyMemory BB(0), AA(5), 5 * 2
    For i = 0 To 4
        Z = Z & " " & BB(i)
    Next
    MsgBox Z
End Sub

Private Sub Command5_Click()
    Dim AA(9) As Long   ' 10 elements
    Dim Z$
    For i = 0 To 9
        AA(i) = i
        Z = Z & " " & AA(i)
    Next
    MsgBox Z

    Dim BB(8) As Long ' Bo elements 0
    Z = ""
    CopyMemory BB(0), AA(1), 9 * 4
    For i = 0 To 8
        Z = Z & " " & BB(i)
    Next
    MsgBox Z
End Sub

Private Sub Command6_Click()
    Dim AA(9) As Integer
    Dim Z$
    For i = 0 To 9
        AA(i) = i
        Z = Z & " " & AA(i)
    Next
    MsgBox Z
    
    Dim BB(4) As Integer ' Bo các element 0 1 2 3 4
    Z = ""
    CopyMemory BB(0), AA(5), 5 * 4
    For i = 0 To 4
        Z = Z & " " & BB(i)
    Next
    MsgBox Z
End Sub

1 nhận xét:

  1. Có bạn hỏi: Code trên có ý nghĩa thế nào?
    Trao đổi: Với mảng VB6, ta có thể thu kích thước mảng với mảng động khi dùng ReDim, có thể kèm Preserve để giữ lại dữ liệu.
    Tuy nhiên ReDim chỉ cắt bỏ các phần tử bên dưới, hoàn toàn không thể cắt bỏ các phần tử đầu tiên.
    Code trên trình bày cách cắt bỏ các phần tử đầu... mà chưa có ai viết.
    Hay không?

    Trả lờiXóa

Trực tuyến

Mục lục Toàn bộ (theo thứ tự thời gian)

Trực tuyến