Создание байтового массива с помощью MemCopy, RtlMoveMemory - VB

Узнай цену своей работы

Формулировка задачи:

Замучался экспериментировать. Помогите, пжлста. Есть байтовый массив a, как с помощью MemCopy или RtlMoveMemory создать новый байтовый массив b с значением, например, а(с 100 до 150). b(0)=a(100):b(1)=a(101): ... :b(50)=a(150)

Решение задачи: «Создание байтового массива с помощью MemCopy, RtlMoveMemory»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
  4.    ByRef Destination As Any, _
  5.    ByRef Source As Any, _
  6.    ByVal Length As Long)
  7.  
  8. Private Sub Form_Load()
  9.   Dim a(0 To 150) As Byte
  10.   Dim lB As Long, uB As Long
  11.   Dim b() As Byte
  12.   Dim lShift As Long
  13.   Dim i As Integer
  14.  
  15.   Me.AutoRedraw = True
  16.   Me.FontName = "Courier New"
  17.  
  18.   ' Заполняем исх. массив:
  19.  lB = LBound(a): uB = UBound(a)
  20.   For i = lB To uB
  21.     a(i) = i
  22.   Next
  23.  
  24.   ' Копируем во второй массив со сдвигом в 100 элементов:
  25.  lShift = 100
  26.   ReDim b(lB To (uB - lShift))
  27.   CopyMemory b(lB), a(lB + lShift), (uB - lB - lShift + 1)
  28.  
  29.   ' Выводим инфу для проверки:
  30.  Me.Print "LBound(a) = " & lB & ", a(" & LBound(a) & ") = " & a(lB)
  31.   Me.Print "UBound(a) = " & uB & ", a(" & UBound(a) & ") = " & a(uB)
  32.   Me.Print ""
  33.   Me.Print "LBound(b) = " & LBound(b) & ", b(" & LBound(b) & ") = " & b(LBound(b))
  34.   Me.Print "UBound(b) = " & UBound(b) & ", b(" & UBound(b) & ") = " & b(UBound(b))
  35. End Sub

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


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

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

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы