vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Allgemeine Frage zum Schreiben von Dateien.. 
Autor: icetea123
Datum: 28.05.08 15:26

Ich hab mal einen Code programmiert. Er scheint auch zu funktionieren. Probier ihn doch mal aus:
Imports System.IO
Imports System.Runtime.InteropServices
 
Public Class Form1
    Public Structure Einfach
        Public Hallo As Integer
        Public Welt As Long
        Public schwierig As String
        Public nochschwieriger(,) As Integer
    End Structure
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Dim ef As Einfach
        ef.Hallo = 10
        ef.Welt = -99999999999999999
        ef.schwierig = "Bar Foo"
        ReDim ef.nochschwieriger(1, 1)
        ef.nochschwieriger(0, 0) = 99
        ef.nochschwieriger(0, 1) = 88
        ef.nochschwieriger(1, 0) = 77
        ef.nochschwieriger(1, 1) = 66
 
        Dim ms As New MemoryStream()
        Write(Of Einfach)(ms, ef)
        ms.Position = 0
        ef = Read(Of Einfach)(ms)
 
 
    End Sub
 
    Public Sub Write(Of T)(ByRef dest As Stream, ByVal struct As T)
        Dim size As Integer = Marshal.SizeOf(struct)
        Dim mem As IntPtr = Marshal.AllocCoTaskMem(size)
        Dim data(0 To size - 1) As Byte
        Marshal.StructureToPtr(struct, mem, False)
        Marshal.Copy(mem, data, 0, size)
 
        Dim s() As Byte = BitConverter.GetBytes(size)
        dest.Write(s, 0, s.Length)
        dest.Write(data, 0, size)
    End Sub
 
    Public Function Read(Of T)(ByRef source As Stream) As T
        Dim size As Integer
        Dim s(0 To 3) As Byte
        source.Read(s, 0, 4)
        size = BitConverter.ToInt32(s, 0)
 
        Dim ptr As IntPtr = Marshal.AllocCoTaskMem(size)
        Dim data(0 To size - 1) As Byte
        source.Read(data, 0, size)
        Marshal.Copy(data, 0, ptr, size)
        Dim st As T = Marshal.PtrToStructure(ptr, GetType(T))
        Marshal.FreeCoTaskMem(ptr)
 
        Return st
    End Function
End Class

-----------------------------------
Betriebssystem: Schrott (Vista)
Entwicklungsumgebung: VS 2008

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Allgemeine Frage zum Schreiben von Dateien..2.079MaxxTc27.05.08 07:28
Re: Allgemeine Frage zum Schreiben von Dateien..1.672ModeratorDieter27.05.08 08:31
Re: Allgemeine Frage zum Schreiben von Dateien..1.685ModeratorFZelle27.05.08 09:33
Re: Allgemeine Frage zum Schreiben von Dateien..1.943MaxxTc27.05.08 10:56
Re: Allgemeine Frage zum Schreiben von Dateien..1.705Moderatorralf_oop27.05.08 11:30
Re: Allgemeine Frage zum Schreiben von Dateien..1.703MaxxTc27.05.08 11:32
Re: Allgemeine Frage zum Schreiben von Dateien..1.709ModeratorFZelle27.05.08 18:45
Re: Allgemeine Frage zum Schreiben von Dateien..1.636icetea12327.05.08 21:00
Re: Allgemeine Frage zum Schreiben von Dateien..1.631icetea12328.05.08 15:26
Re: Allgemeine Frage zum Schreiben von Dateien..1.649MaxxTc28.05.08 16:14
Re: Allgemeine Frage zum Schreiben von Dateien..1.613icetea12328.05.08 18:47
Re: Allgemeine Frage zum Schreiben von Dateien..1.697Melkor28.05.08 16:30

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel