Создание байтового массива с помощью 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы