Записать в файл структуру двоичных данных - Visual Basic .NET

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

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

Всем здравствуйте. Как записать в файл (считать из файла) структуру двоичных данных?
В Form_Load:
то есть размер структуры должен быть 4 + 2 + 2 + 2 + (4x100) = 410 байт. Как увидеть размер структуры после применения ReDim?

Решение задачи: «Записать в файл структуру двоичных данных»

textual
Листинг программы
Imports System.Runtime.InteropServices
Imports System.Text
 
Public Class Form1
 
    Private Structure Test
        Dim Var1 As Short
        Dim Var2 As Short
    End Structure
 
    Dim ByteArray() As Byte
 
    'Перевод структуры в байты
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Tst As Test
        Tst.Var1 = 911
        Tst.Var2 = 7
        Dim Ptr As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(Tst))
        ReDim ByteArray(Marshal.SizeOf(Tst) - 1)
        Marshal.StructureToPtr(Tst, Ptr, False)
        Marshal.Copy(Ptr, ByteArray, 0, Marshal.SizeOf(Tst))
        Marshal.FreeHGlobal(Ptr)
    End Sub
 
    'Из байтов в структуру
    Private Function BulidStr(ByVal Buff() As Byte, ByVal MyType As System.Type) As Object
        Dim MyGC As GCHandle = GCHandle.Alloc(Buff, GCHandleType.Pinned)
        Dim Obj As Object = Marshal.PtrToStructure(MyGC.AddrOfPinnedObject, MyType)
        Return Obj
        MyGC.Free()
    End Function
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Tst As Test
        Tst = BulidStr(ByteArray, Tst.GetType)
        MsgBox(Tst.Var1.ToString)
        MsgBox(Tst.Var2.ToString)
    End Sub
End Class

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


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

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

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