Bonjour,
Comment sérialiser un objet pour l'écrire dans un fichier ou l'envoyer avec une socket ?
Merci.
Bonjour,
Comment sérialiser un objet pour l'écrire dans un fichier ou l'envoyer avec une socket ?
Merci.
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 :
http://www.pocketsoap.com/pocketsoap/docs/master/propbag.htm
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
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.
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.
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
A ce moment là ce n'est plus de la sérialisation d'objets mais écriture d'un simple fichier binaireJe veux transformer mon objet en tableau d'octets ou équivalent
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.
Et combien de sucres dans le café ?
Bah c'est juste ce que font les méthodes Serialize du Java et du PHP par exemple...
bonjour,Envoyé par hpj
Utiliser pour cela l'exemple que j'ai donné précedemment
Ok, j'ai compris
Voilà mon code pour ceux qui sont intéressés:
Et ce code fonctionne dans n'importe quelle classe, même dans les forms !
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
Partager