Как скопировать участок памяти в переменную типа Variant? - VB

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

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

Стоит ли игра свеч?
Так естественно не получается, ибо особая структура контейнера. Для чего это? Вообще, делаю некий аналог VB-шной функции Get и иже с ними на WinAPI. Т.е. вне зависимости от типа данных переменной, переданной функции Get, ей присваивается значение из файла. Выглядит это так (но хочется упростить, если это возможно):

Решение задачи: «Как скопировать участок памяти в переменную типа Variant?»

textual
Листинг программы
Option Explicit
 
Private Declare Function memcpy Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal length As Long) As Long
 
Private Sub Form_Load()
    Dim b(1) As Byte
    
    b(0) = 3
    b(1) = 4
 
    Debug.Print "Addr b(0)=" & Hex(VarPtr(b(0)))
    foo b
End Sub
 
Function foo(v As Variant)
    Dim ptr As Long
    
    Debug.Print "Addr v: " & Hex(VarPtr(v))
    
    memcpy ptr, ByVal VarPtr(v) + 8, 4&
    Debug.Print "Addr ptr: " & Hex(ptr)
    Debug.Print "Type: " & Hex(VarType(v))
    
End Function

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


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

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

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