IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6]Sérialiser un objet [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut [VB6]Sérialiser un objet
    Bonjour,

    Comment sérialiser un objet pour l'écrire dans un fichier ou l'envoyer avec une socket ?

    Merci.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    créer un module de classe ( c'est obligatoire de toute façon pour créer un objet)

    et simplement faire appel aux méthodes ReadProperties et WriteProperties du module de classe ceci pour tout instance de classe.

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    telephone.cls
    Option Explicit
     
    Public area As String
    Public exchange As String
    Public number As String
     
    Private Sub Class_ReadProperties(PropBag As PropertyBag)
        area = PropBag.ReadProperty("area")
        exchange = PropBag.ReadProperty("exchange")
        number = PropBag.ReadProperty("number")
    End Sub
     
    Private Sub Class_WriteProperties(PropBag As PropertyBag)
        PropBag.WriteProperty "area", area
        PropBag.WriteProperty "exchange", exchange
        PropBag.WriteProperty "number", number
    End Sub
    http://www.pocketsoap.com/pocketsoap/docs/master/propbag.htm

  3. #3
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Oui, mais comment récupérer mon objet sérialisé !!!
    Et si je veux envoyer un objet via le réseau ?

    Je veux transformer mon objet en tableau d'octets ou équivalent.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Points : 97
    Points
    97
    Par défaut
    Tu as essayé un petit peu ?

    mat.M t'as donné un exemple complet, ensuite tu n'as qu'à utiliser la propriété Contents, une chaine de carctere que tu envois et que tu recupères par le moyen de ton choix.

  5. #5
    mat.M
    Invité(e)
    Par défaut
    TRES IMPORTANT !

    Il faut créer une DLL Active X pour cela et mettre la propriété Peristable à True.
    Sinon hpj voir sur www.msdn.microsoft.com

    Je veux transformer mon objet en tableau d'octets ou équivalent
    A ce moment là ce n'est plus de la sérialisation d'objets mais écriture d'un simple fichier binaire

  6. #6
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    J'aimerais simplement une fonction qui prend en paramètre un objet et qui le retourne sérialisé sous la forme d'un tableau d'octets.
    Et une autre fonction qui fait l'inverse.

  7. #7
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 117
    Points : 97
    Points
    97
    Par défaut
    Et combien de sucres dans le café ?

  8. #8
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Bah c'est juste ce que font les méthodes Serialize du Java et du PHP par exemple...

  9. #9
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par hpj
    J'aimerais simplement une fonction qui prend en paramètre un objet et qui le retourne sérialisé sous la forme d'un tableau d'octets.
    Et une autre fonction qui fait l'inverse.
    bonjour,
    Utiliser pour cela l'exemple que j'ai donné précedemment

  10. #10
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Ok, j'ai compris

    Voilà mon code pour ceux qui sont intéressés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Option Explicit
     
    Public numero As Long
    Public nom As String
    Public adresse As New clsAdresse ' l'objet contient un autre objet sur lequel sont définies les fonctions Serialized et Unserialize
     
    ' Retourne l'objet sérialisé
    Public Function Serialized() As Byte()
        Dim pb As New PropertyBag
        pb.WriteProperty "numero", numero
        pb.WriteProperty "nom", nom
        pb.WriteProperty "adresse", adresse.Serialized ' PUISSANT
        Serialized = pb.Contents
    End Function
     
    ' Intialise l'objet à partir d'un objet sérialisé
    Public Sub Unserialize(ByRef serializedClient() As Byte)
        Dim pb As New PropertyBag
        pb.Contents = serializedClient
        numero = pb.ReadProperty("numero")
        nom = pb.ReadProperty("nom")
        adresse.Unserialize pb.ReadProperty("adresse") ' SUPER PUISSANT
    End Sub
    Et ce code fonctionne dans n'importe quelle classe, même dans les forms !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Paramètre facultatif pour un objet Command
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/04/2006, 02h40
  2. [VB6] Erreur pilote ISAM avec objet Data
    Par quaife dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 30/03/2006, 18h04
  3. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2003, 12h58
  4. [VB6][DoVerb]Lancer automatiquement un objet OLE
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2002, 14h29
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo