Dim formatter As New BinaryFormatter Dim ms As New MemoryStream() Try formatter.Serialize(ms, ValReadOnLine) Console.WriteLine("Size :" & ms.Length) Catch ex As SerializationException Console.WriteLine(ex.Message) Finally ms.Close() End Try
<StructLayout(LayoutKind.Sequential)> _ <Serializable()> _ Public Structure Voie ... End Structure
<StructLayout(LayoutKind.Sequential)> _
<Serializable()> _
Public Structure Voie
...
End Structure
<Serializable()> _ Public Class Voie Public IsActiv As Boolean 'Cet Item est actif Public Name As String Public ColorTray As Color Public HTray As Integer 'Epaisseur du trait Public ValFormat As Integer 'Format de la données (INT, REAL, BOOL) Public IsStepped As Boolean 'Representation en echelon ou extrapole Public OffsetH As Integer Public ScaleMax As Decimal 'Seuil Haut de la mise a l'echelle Public ScaleMin As Decimal 'Seuil Bas de la mise a l'echelle Public TimeRead() As Date Public ValRead() As Decimal End Class
Sub Serialize() Using fs As New FileStream("SaveData.dat", FileMode.Create) Try Dim formatter As New BinaryFormatter formatter.Serialize(fs, ValReadOnLine) Catch ex As SerializationException Console.WriteLine(ex.Message) End Try End Using End Sub
Sub Deserialize() Using fs As New FileStream("SaveData.dat", FileMode.Open) Try Dim formatter As New BinaryFormatter ValReadOnLine = DirectCast(formatter.Deserialize(fs), Voie) Catch ex As SerializationException Console.WriteLine(ex.Message) End Try End Using End Sub
ValReadOnLine.Name = "Test 123" ValReadOnLine.TimeRead = Array.CreateInstance(GetType(Date), 5) For i As Integer = 0 To 4 ValReadOnLine.TimeRead(i) = Date.Now.AddDays(i) Next ValReadOnLine.ValRead = Array.CreateInstance(GetType(Decimal), 5) For i As Integer = 0 To 4 ValReadOnLine.ValRead(i) = i Next Serialize() ' on sauvegarde ValReadOnLine = Nothing 'juste pour voir si on récupère bien Deserialize() 'on récupère ' sous débugger tu peux vérifier les données
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
19 janv. 2014 à 11:05