[lamegrid] sérialisation - déserialisation

Soyez le premier à donner votre avis sur cette source.

Vue 5 266 fois - Téléchargée 427 fois

Description

Classe permettant la sérialisation - désérialisation d'une LameGrid. Accompagnée d'un exemple d'utilisation (zip)

Source / Exemple :


Option Strict On
Option Explicit On
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

Public Class Serial_Deserial_LameGrid
    Public X_ As Integer
    Public Y_ As Integer
    Private _Grille(X_, Y_) As String

    Public Property grille() As Array
        Get
            grille = _Grille
        End Get
        Set(ByVal value As Array)
            _Grille = CType(value, String(,))
        End Set
    End Property

    Public Sub SerialiseLameGrid(ByVal path As String, ByVal NbLigne As Integer, _
                                 ByVal NbColonne As Integer, ByVal Grille(,) As String, _
                                  ByVal ControlLG As LameGrid.Grid)

        Dim LeFlux As Stream = File.Create(path) 'préparation du flux
        Dim serializer As New BinaryFormatter
        For x = 0 To NbLigne - 1 'Pour chaque ligne
            For y = 0 To NbColonne - 1 'Pour chaque colonne
                Grille(x, y) = ControlLG(x, y).Text 'on remplit un tableau avec la lamegrid
                Me._Grille = Grille 'on affecte le tableau à l'objet grille
            Next
        Next
        serializer.Serialize(LeFlux, Me._Grille) 'on serialise
        LeFlux.Flush()
        LeFlux.Close()
        LeFlux.Dispose()
    End Sub
    Public Sub DeserialiseLamegrid(ByVal path As String, ByVal NbLigne As Integer, _
                                   ByVal NbColonne As Integer, ByVal Grille(,) As String, _
                                    ByVal ControlLG As LameGrid.Grid)

        Dim LeFlux As Stream = File.OpenRead(path) 'on prépare le flux
        Dim deserializer As New BinaryFormatter

        Me._Grille = CType(deserializer.Deserialize(LeFlux), String(,)) 'on deserialise le fichier dans l'object grille
        Grille = CType(Me._Grille, String(,)) 'on met l'objet grille dans un tableau

        For x = 0 To X_
            For y = 0 To Y_
                ControlLG(x, y).Text = Grille(x, y) 'on remplit la lamegrid depuis le tableau
            Next
        Next
        ControlLG.Refresh()

        LeFlux.Close()
        LeFlux.Dispose()
    End Sub
End Class

Conclusion :


Malgré quelques applications à mon actif, c'est ma première source déposée sur codes-sources.com. J'accepte les critiques et les commentaires mais soyez indulgents ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
yeah !! good job
AlexMS
Messages postés
5
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
10 janvier 2011
-
Merci pour les commentaires.

En effet, je viens d'essayer sans le fluch, et ça écrit dans le fichier quand même (contrairement au StreamWriter)
Pour la sub, elle ressemble à celle que j'ai mise plus haut. Suite à ça, j'ai revu ma copie, et ai amélioré cette classe niveau de la LameGrid. J'y ai aussi ajouté une fonction pour un Listview et une collection de TexBox... Si ça intéresse quelqu'un ...
Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
exemple instructif, pourrait être fait aussi pour une listview (présent dans VS), pour le fun une petite focntion pour l'ajout ou la vidange de la grid ;)
private sub remplir_grid (byval text as string)
65. With Me.Grid1
66. For x = 0 To .RowsCount - 1
68. For y = 0 To .ColsCount - 1
69. Grid1(x, y).Text = text
70. Next
71. Next
72. .Refresh()
73. End With
end sub

pour les try/catch en lecture/écriture je les aurais placé dans la classe, mais bon cela doit être une histoire de gout ? Pour le flush et le File.Create(path) je en suis pas sur que cela serve, à voir avec les "pros"
Bonne prog à toi
AlexMS
Messages postés
5
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
10 janvier 2011
-
Voilà, ça devrait être bon là ...
yohan49
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
13 août 2011
7 -
heu l'exemple est dans le code :x

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.