Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SÉRIALISATION/DÉSÉRIALISATION BINAIRE D'UNE CLASSE


Information sur la source

Description

Création d'une DLL (classe High-Score) avec possibilité de (dé)sérialisation.
Le fichier zip comporte 2 sources :

- la classe HighScore (à compiler dans une bibliotèque de classe). A noter : dans les propiétés de la solution, vous devez laisser vide le "Namespace racine".

- le module (programme principal) qui fait appel à la classe : vous devez importer la classe "HighScore.dll" dans vos références avant de lancer le programme.


 

Source

  • Imports System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
  • Imports System.IO
  • <Serializable()> _
  • Public Class HighScore
  • ' attributs
  • Private _pseudo As String
  • Private _score As Integer
  • Private _reussite As Double
  • Private _duree_jeu As TimeSpan
  • ' propriétés
  • Public Property pseudo() As String
  • Get
  • Return _pseudo
  • End Get
  • Set(ByVal value As String)
  • _pseudo = value
  • End Set
  • End Property
  • Public Property score() As Integer
  • Get
  • Return _score
  • End Get
  • Set(ByVal value As Integer)
  • _score = value
  • End Set
  • End Property
  • Public Property reussite() As Double
  • Get
  • Return _reussite
  • End Get
  • Set(ByVal value As Double)
  • _reussite = value
  • End Set
  • End Property
  • Public Property duree_jeu() As TimeSpan
  • Get
  • Return _duree_jeu
  • End Get
  • Set(ByVal value As TimeSpan)
  • _duree_jeu = value
  • End Set
  • End Property
  • Public Shared Sub Serialize(ByVal struct As HighScore, ByVal fichier As String)
  • Dim serializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
  • New Runtime.Serialization.Formatters.Binary.BinaryFormatter
  • Dim stream As FileStream
  • 'If struct Is Nothing Then Return False
  • If Not File.Exists(fichier) Then
  • stream = New FileStream(fichier, FileMode.Create)
  • Else
  • stream = New FileStream(fichier, FileMode.Append)
  • End If
  • serializer.Serialize(stream, struct)
  • stream.Close()
  • End sub
  • Public Shared Function Nb_Enregistrements(ByVal fichier As String) As Integer
  • Dim deserializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
  • New Runtime.Serialization.Formatters.Binary.BinaryFormatter
  • Dim stream As FileStream
  • Dim result As HighScore
  • Dim nb as Integer = 0
  • If Not File.Exists(fichier) Then
  • return -1
  • else
  • stream = New FileStream(fichier, FileMode.Open)
  • While True
  • Try
  • result = deserializer.Deserialize(stream)
  • nb += 1
  • stream.Flush
  • Catch
  • Exit While
  • End Try
  • End While
  • stream.Close()
  • return nb
  • End If
  • End Function
  • Public Shared Function Deserialize(ByVal fichier As String, ByRef t_HS() as HighScore) As Integer
  • Dim deserializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
  • New Runtime.Serialization.Formatters.Binary.BinaryFormatter
  • Dim stream As FileStream
  • Dim i, nb as Integer
  • If Not File.Exists(fichier) Then
  • return -1
  • Else
  • Try
  • nb = Nb_Enregistrements (fichier)
  • ReDim t_HS(nb)
  • Catch
  • console.Write ("Impossible de déterminer le nombre d'enregistrements.")
  • console.ReadKey
  • Exit Function
  • End Try
  • stream = New FileStream(fichier, FileMode.Open)
  • For i=0 to nb-1
  • t_HS(i) = deserializer.Deserialize(stream)
  • stream.Flush
  • Next
  • stream.Close()
  • return nb
  • End If
  • End Function
  • ' Constructeur
  • Public Sub New(ByVal pseudo As String, ByVal score As Integer, _
  • ByVal reussite As Double, ByVal duree_jeu as TimeSpan)
  • Me._pseudo = pseudo
  • Me._score = score
  • Me._reussite = reussite
  • Me._duree_jeu = duree_jeu
  • End Sub
  • End Class
Imports System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Imports System.IO

<Serializable()> _
Public Class HighScore

  ' attributs
  Private _pseudo As String
  Private _score As Integer
  Private _reussite As Double
  Private _duree_jeu As TimeSpan

  ' propriétés
  Public Property pseudo() As String
  Get
    Return _pseudo
  End Get
  Set(ByVal value As String)
    _pseudo = value
  End Set
  End Property

  Public Property score() As Integer
  Get
    Return _score
  End Get
  Set(ByVal value As Integer)
    _score = value
  End Set
  End Property

  Public Property reussite() As Double
  Get
    Return _reussite
  End Get
  Set(ByVal value As Double)
    _reussite = value
  End Set
  End Property

  Public Property duree_jeu() As TimeSpan
  Get
    Return _duree_jeu
  End Get
  Set(ByVal value As TimeSpan)
    _duree_jeu = value
  End Set
  End Property



  Public Shared Sub Serialize(ByVal struct As HighScore, ByVal fichier As String)

    Dim serializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
          New Runtime.Serialization.Formatters.Binary.BinaryFormatter
    Dim stream As FileStream
        
    'If struct Is Nothing Then Return False
    If Not File.Exists(fichier) Then
      stream = New FileStream(fichier, FileMode.Create)
    Else
      stream = New FileStream(fichier, FileMode.Append)
    End If

    serializer.Serialize(stream, struct)
    stream.Close()

  End sub


  Public Shared Function Nb_Enregistrements(ByVal fichier As String) As Integer

    Dim deserializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
                    New Runtime.Serialization.Formatters.Binary.BinaryFormatter
    Dim stream As FileStream 
    Dim result As HighScore
    Dim nb as Integer = 0

    If Not File.Exists(fichier) Then
      return -1
    else
      stream = New FileStream(fichier, FileMode.Open)

      While True
        Try
          result = deserializer.Deserialize(stream)
          nb += 1
          stream.Flush
        Catch
          Exit While
        End Try         
      End While

      stream.Close()
      return nb
    End If

  End Function


  Public Shared Function Deserialize(ByVal fichier As String, ByRef t_HS() as HighScore) As Integer

    Dim deserializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
                    New Runtime.Serialization.Formatters.Binary.BinaryFormatter
    Dim stream As FileStream 
    Dim i, nb as Integer

    If Not File.Exists(fichier) Then
      return -1
    Else
      Try
        nb = Nb_Enregistrements (fichier)
        ReDim t_HS(nb)
      Catch
        console.Write ("Impossible de déterminer le nombre d'enregistrements.")
        console.ReadKey
        Exit Function
      End Try

      stream = New FileStream(fichier, FileMode.Open)

      For i=0 to nb-1
        t_HS(i) = deserializer.Deserialize(stream)
        stream.Flush
      Next

      stream.Close()
      return nb
    End If
  End Function


  ' Constructeur
  Public Sub New(ByVal pseudo As String, ByVal score As Integer, _
                 ByVal reussite As Double, ByVal duree_jeu as TimeSpan)
    Me._pseudo = pseudo
    Me._score = score
    Me._reussite = reussite
    Me._duree_jeu = duree_jeu
  End Sub

End Class

Conclusion

Cette source fait suite à celle-ci : http://www.vbfrance.com/codes/SERIALISATION-DESERIALISATION-STRUCTURE_41077.aspx
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Enregistrement structure dans fichier binaire en .Net [ par Djin2004 ] Bonjour,Je dispose d'une structure contenant environ 150 variables et j'aimerais savoir s'il est possible en VB.net de l'enregistrer en une seule fois fichier binaire [ par taghzou ] salut tous le monde, j'ai un fichier binaire ,mais le probleme j ai pas la structure utilis&#233; comment faire pour generer la structure pour pouvoir [vb.net]Fichier binaire et structure [ par spycko ] Salutj'ai cr&#233;er une structure (T_FILEHST) qui corespont &#224; la strucure de mon fichier binaireet je voudrez mettre le contenu de mon fichier d Structure d'un fichier binaire? [ par pinje ] Bonjour a tous,J'aimerais lire un fichier binaire contenant les resultats d'un calcul, or je ne connais pas a l'avance sa structure... Est ce qu'il es lire 4 bytes dans un fichier binaire [ par ravachol ] bonjour a tous,j'ai un fichier binaire ou il y a a l'adresse 0x000E  4 bytes qui donne un entier normalement(voir image)moi je lit le fichier comme ça Comparaison entre deux bases de données ayant la même structure [ par lindahaddad ] Bonjours,J'ai  un fichier saisie  en CSpro3.3 ( un ensemble de questionnaires (1500 qs) ce fichier peut etre transferer à un fichier texte) je veut fa Afficher un fichier pdf en passant son binaire [ par tabarrant ] Salut tous le monde, Voila je vous explique mon problème. On a un serveur avec plein de fichier en pdf; donc on y fait des recherche et importation .net ouverture de fichier binaire [ par yvesyves ] Slt, je cherche à ouvrir dans vb2005 à ouvrir un fichier en mode binaire. Mais mon problème le plus important est de savoir comment on enregistre des Lire des nombres dans un fichier binaire [ par rolcos ] Bonjour à tous, Avec VB6, comment faire pour afficher une donnée (exemple 414F) lue dans un fichier binaire. 414F ne sont pas les caractères A et O, Lire un Fichier Binaire [ par dbx99 ] Bonjour,je suis un d&#233;veloppeur d&#233;butant !Mon probl&#232;me est le suivant :Je veux ouvrir un fichier (.mp3) en mode binaire pour en extraire


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,295 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.