cs_chris81
Messages postés589Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention29 avril 2008
-
2 mars 2005 à 00:47
chris37000
Messages postés42Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention12 décembre 2017
-
4 juil. 2013 à 13:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
chris37000
Messages postés42Date d'inscriptionvendredi 22 décembre 2000StatutMembreDernière intervention12 décembre 2017 4 juil. 2013 à 13:56
Bonjour ce post commence a daté mais j'ai un souci avec cette copie d'objet. Mon souci poste sur la copie d'objet graphique.
Dans le cadre d'une évolution d'un code VB6 vers VB.net
Sur ma form j'ai 120 fois un groupBox contenant plusieurs picturebox (6) et plusieurs textbox (4).
Au lieu de les dessiner un par un comme on faisait dans VB6 à l'aide des index formant des tableau. J'aimerais en dessiner un puis le recopier 120 fois en les affectant dans des tableau de Picturebox et textbox et groupebox ainsi je garde tout mon code d'algo de VB6 pour aller modifier les objets.
Est-ce possible avec la sérialisation.
CGSI3
Messages postés416Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention 7 janvier 20181 24 avril 2011 à 23:12
GW74372
Messages postés6Date d'inscriptionmercredi 24 septembre 2008StatutMembreDernière intervention31 mars 2010 27 juil. 2009 à 16:53
Bonjour,
Je voudrais répondre à LATE sur sa classe qui ne se clone pas.
En fait, commele précisait NICOLASLIGHT la classe doit être <sérialiable>_ mais aussi les objets qui la compose. Et malheureusement Collection ne l'est pas!!
Pour que cela marche il faudrait que tu fasse une collection typé qui herite de ISerializable
Voila!
NicolasLight
Messages postés5Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention18 novembre 2005 13 nov. 2005 à 10:45
Salut LATE, dans ton cas, le plus simple est d'implémenter la fonction Clone de l'interface ICloneable comme le décrit ofeelfree. De toute manière, avec du recul, je me suis rendu compte que ma méthode n'était pas très rapide à l'exécution mais a l'avantage de pouvoir cloner n'importe quoi facilement sans devoir écrire cette fonction clone.
Cependant, ça m'étonne que ça ne marche pas sur ta classe. N'oublies pas de mettre <serializable>_ devant la déclaration de la classe.
cs_LATE
Messages postés2Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention 7 novembre 2005 7 nov. 2005 à 17:14
Sympa.... mais pas de récursivité...
si quelqu'un trouve avant moi ..
en clair si ma classe :
# Class personne
# public nom as string
# public prenom as string
public colVoiture as collection
#
# public sub New(byval nom as string, byval prenom as string)
# Me.nom = nom
# Me.prenom = prenom
Me.colVoiture = new collection
Me.colVoiture.add (1, "Fiat")
Me.colVoiture.add (2, "Renault")
# End sub
# End Class
#
dans ce cas... ca marche pas..
merci pour celui qui trouve avant moi ..;
cs_Pitchou13
Messages postés12Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 8 mars 2005 8 mars 2005 à 10:55
Je crois que sur VBA il y avait une fonction pour ca ! et Avec les réferences, je clonait un objet en une ligne sous VB6... Je vais essayer de la retrouver ...
@+
NicolasLight
Messages postés5Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention18 novembre 2005 5 mars 2005 à 20:53
Je suis désolé, je n'ai pas beaucoup travaillé en VB6, j'ai surtout travaillé en JAVA et en VB.NET.
Mais si je trouve une réponse à ta question, je la posterai ici ;-)
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 4 mars 2005 à 20:22
Existe-t-il la meme astuce pour les classes en VB6 ?
cs_chris81
Messages postés589Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention29 avril 20082 2 mars 2005 à 22:18
merci pour tes explications claires 8/10
NicolasLight
Messages postés5Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention18 novembre 2005 2 mars 2005 à 17:04
Avant tout, merci de vos commentaires.
Pour répondre à Chris81,
Sérialisez signifie en gros :
transformer un objet en données que l'on pourra écrire sur un flux. On utilise alors un formateur (ex : le binaryFormatter) pour transformer cet objet en binaire par exemple, donc en un tableau de bytes, ou en xml avec le xmlSerializer.
Cette manipulation permet ainsi d'écrire un objet sur n'importe quel flux (Stream).
La désérialisation est le procédé inverse de la sérialisation : on retransforme les données d'un flux (Stream) en un objet du type de départ (dans mon exemple, on retransforme en un objet Personne).
J'espère avoir répondu à ta réponse.
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200722 2 mars 2005 à 11:41
C'est une astuce intérressante. Cependant ya des techniques un plus objets :)
4 juil. 2013 à 13:56
Dans le cadre d'une évolution d'un code VB6 vers VB.net
Sur ma form j'ai 120 fois un groupBox contenant plusieurs picturebox (6) et plusieurs textbox (4).
Au lieu de les dessiner un par un comme on faisait dans VB6 à l'aide des index formant des tableau. J'aimerais en dessiner un puis le recopier 120 fois en les affectant dans des tableau de Picturebox et textbox et groupebox ainsi je garde tout mon code d'algo de VB6 pour aller modifier les objets.
Est-ce possible avec la sérialisation.
24 avril 2011 à 23:12
je vous joint juste ce lien pour vous montrer, que même si elle fonctionne, il y a des pb de velocité dans cette méthode
http://www.vbfrance.com/forum/sujet-SERIALISATION-CLONAGE_1515175.aspx
Bonne prog CGSI3
27 juil. 2009 à 16:53
Je voudrais répondre à LATE sur sa classe qui ne se clone pas.
En fait, commele précisait NICOLASLIGHT la classe doit être <sérialiable>_ mais aussi les objets qui la compose. Et malheureusement Collection ne l'est pas!!
Pour que cela marche il faudrait que tu fasse une collection typé qui herite de ISerializable
Voila!
13 nov. 2005 à 10:45
Cependant, ça m'étonne que ça ne marche pas sur ta classe. N'oublies pas de mettre <serializable>_ devant la déclaration de la classe.
7 nov. 2005 à 17:14
si quelqu'un trouve avant moi ..
en clair si ma classe :
# Class personne
# public nom as string
# public prenom as string
public colVoiture as collection
#
# public sub New(byval nom as string, byval prenom as string)
# Me.nom = nom
# Me.prenom = prenom
Me.colVoiture = new collection
Me.colVoiture.add (1, "Fiat")
Me.colVoiture.add (2, "Renault")
# End sub
# End Class
#
dans ce cas... ca marche pas..
merci pour celui qui trouve avant moi ..;
8 mars 2005 à 10:55
@+
5 mars 2005 à 20:53
Mais si je trouve une réponse à ta question, je la posterai ici ;-)
4 mars 2005 à 20:22
2 mars 2005 à 22:18
2 mars 2005 à 17:04
Pour répondre à Chris81,
Sérialisez signifie en gros :
transformer un objet en données que l'on pourra écrire sur un flux. On utilise alors un formateur (ex : le binaryFormatter) pour transformer cet objet en binaire par exemple, donc en un tableau de bytes, ou en xml avec le xmlSerializer.
Cette manipulation permet ainsi d'écrire un objet sur n'importe quel flux (Stream).
La désérialisation est le procédé inverse de la sérialisation : on retransforme les données d'un flux (Stream) en un objet du type de départ (dans mon exemple, on retransforme en un objet Personne).
J'espère avoir répondu à ta réponse.
2 mars 2005 à 11:41
http://www.codeproject.com/csharp/cloneimpl_class.asp
2 mars 2005 à 10:35
On pourrait aussi imaginer :
Public Class Personne
Implements ICloneable
Public mNom As String
Public mPrenom As String
Public Sub New(Nom As String, Prenom As String)
mNom = Nom
mPrenom = Prenom
End Sub
Public Function Clone() As Personne Implements ICloneable.Clone
Return New Personne(mNom, mPrenom)
End Function
End Class
Ainsi on peut se passer de la sérialisation et implémenter l'interface par défaut qui va bien...
2 mars 2005 à 00:47
que veux dire serialise et deserialise?
merci