Создание байтового массива с помощью MemCopy, RtlMoveMemory - VB
Формулировка задачи:
Замучался экспериментировать. Помогите, пжлста.
Есть байтовый массив a, как с помощью MemCopy или RtlMoveMemory
создать новый байтовый массив b с значением, например, а(с 100 до 150).
b(0)=a(100):b(1)=a(101): ... :b(50)=a(150)
Решение задачи: «Создание байтового массива с помощью MemCopy, RtlMoveMemory»
textual
Листинг программы
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long)
Private Sub Form_Load()
Dim a(0 To 150) As Byte
Dim lB As Long, uB As Long
Dim b() As Byte
Dim lShift As Long
Dim i As Integer
Me.AutoRedraw = True
Me.FontName = "Courier New"
' Заполняем исх. массив:
lB = LBound(a): uB = UBound(a)
For i = lB To uB
a(i) = i
Next
' Копируем во второй массив со сдвигом в 100 элементов:
lShift = 100
ReDim b(lB To (uB - lShift))
CopyMemory b(lB), a(lB + lShift), (uB - lB - lShift + 1)
' Выводим инфу для проверки:
Me.Print "LBound(a) = " & lB & ", a(" & LBound(a) & ") = " & a(lB)
Me.Print "UBound(a) = " & uB & ", a(" & UBound(a) & ") = " & a(uB)
Me.Print ""
Me.Print "LBound(b) = " & LBound(b) & ", b(" & LBound(b) & ") = " & b(LBound(b))
Me.Print "UBound(b) = " & UBound(b) & ", b(" & UBound(b) & ") = " & b(UBound(b))
End Sub