Avatar billede MadsHaupt Juniormester
07. august 2013 - 15:02 Der er 4 kommentarer og
2 løsninger

Structurere i visual basic

Jeg er ved at lære hvordan man om daner bytes til en structure og om vent, men hvis man så bruger en anden type end en structure for eksempel System.Windows.Forms.Form, så består den af 4 byte, men hvordan hænger det sammen?.

Kode:

Imports System.Runtime.InteropServices
Imports System.IO

Public Class Form1

    Structure a
        Public a As System.Windows.Forms.Form
    End Structure

    Public Function GetStructure(Of T As Structure)(ByVal inputStream As Stream) As T
        Dim size As Integer = Marshal.SizeOf(GetType(T))
        Dim bytes(size - 1) As Byte
        inputStream.Read(bytes, 0, bytes.Length)
        Dim ptr As IntPtr = Marshal.AllocHGlobal(size)
        Marshal.Copy(bytes, 0, ptr, bytes.Length)
        Return Marshal.PtrToStructure(ptr, GetType(T))
    End Function

End Class
Avatar billede arne_v Ekspert
07. august 2013 - 19:14 #1
Jeg gaetter paa at du deserialiserer en reference og en referance fylder 4 byte i en 32 bit CLR.
Avatar billede MadsHaupt Juniormester
08. august 2013 - 10:34 #2
Hvordan bruger jeg så det?.
Avatar billede arne_v Ekspert
09. august 2013 - 03:39 #3
Det er stort set ubrugeligt.

Ovenstaaende kode virker kun med sequential struct layout.

Hvad vil du goere med en klasse?
Avatar billede MadsHaupt Juniormester
11. august 2013 - 12:37 #4
arne_v skriv et svar så får du point.
Avatar billede arne_v Ekspert
12. august 2013 - 00:51 #5
svar
Avatar billede arne_v Ekspert
12. august 2013 - 00:53 #6
Hvis du gerne vil serialisere objekter af reference typer til og fra byte stream og du er villig til manuelt at angive serialiseringen, saa kan du bruge:

http://www.vajhoej.dk/arne/opensource/nrecord/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester