Создание байтового массива с помощью 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д