Serialization

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 - 8 sept. 2008 à 20:30
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 - 9 sept. 2008 à 16:23
le code suivant me renvoie une exeption et je ne sais plus quoi faire

 Dim sdf As New SaveFileDialog
            With sdf
                .AddExtension = True
                .DefaultExt = ".record"
                .FileName = Now.ToLongDateString
                .Filter = "recorder (*.record)|*.record"
            End With
            If sdf.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim Serializer As New
Runtime.Serialization.Formatters.Binary.BinaryFormatter
                Dim DataFile As New FileStream(sdf.FileName,
FileMode.Create, FileAccess.Write, FileShare.None)

                Serializer.Serialize(DataFile, eventsi)
                DataFile.Close()
                ' Data = Nothing
            End If

voici le détail de l'exeption

Le type 'System.Windows.Forms.MouseEventArgs' dans l'assembly
'System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089' n'est pas marqué comme sérialisable.
 

Bonjour chez vous !

10 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 sept. 2008 à 14:27
Bonjour,

Quel est le type de Eventsi ?

Car d'après le message, il est clairement indiqué que tu tente de sérialiser un truc non sérialisable.

http://nhen0039.chez-alice.fr/index.php
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
9 sept. 2008 à 14:34
salut man ben oui c'est clair hein
c'est pour faireun petit (in)utilitaire comme il y avait sous Win3.11
recorder de clavier souris

mon code fonctionne mais impossible de sauver le truc dans un fichier pour  
"  later playback "

Private eventsi
As List(
Of MacroEvent) =
New List(
Of MacroEvent)()

Bonjour chez vous !
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 sept. 2008 à 14:48
Bonjour,

Dans MacroEvent, tu doit avoir une déclaration "As MouseEventArgs".

Je te conseillerais plutot de n'enregistrer la position et le reste en oubliant "MouseEventArgs".

http://nhen0039.chez-alice.fr/index.php
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
9 sept. 2008 à 14:55
ben pas possible  faut l'enregistrer tel quel sinon le prog ne s'y retrouvera pas pour le play back quand je rechargerai le truc

Bonjour chez vous !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 sept. 2008 à 15:11
Bonjour,

Tu ne peux pas pour le rejeu recréer (New) les objets (MouseEventArgs) ?

Alors si c'est le cas, je vais avoir besoin de plus d'explication (car je ne connais pas cet utilitaire).

http://nhen0039.chez-alice.fr/index.php
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
9 sept. 2008 à 15:24
je te l'ai envoyé par mail à l'adresse avec laquelle tu m'as déjà répondu


dis moi ce que tu en penses, ce qui est faisable










Bonjour chez vous !
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 sept. 2008 à 15:43
Bonjour,

Solution (enfin projet) reçue.

Je maintien que si tu utilises des attributs pour enregistrer les valeurs contenues dans les EventArgs que tu utilises, ça devrait marcher.

Ensuite, tu peux tout mettre dans une Class (éventuellement dérivée en plusieurs autres) afin de faciliter la récupération.

Petit conseil, pour plus de perf (enfin si besoin), préfère DirectCast à la place de CType, cela est plus rapide, mais réclame que le cast soit direct et non adaptatif (Long -> Integer est interdit par ex).

http://nhen0039.chez-alice.fr/index.php
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
9 sept. 2008 à 15:57
je vois pas comment je pourrais faire cela
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
9 sept. 2008 à 16:17
Bonjour,

De ce que j'ai vu, tu utilises les EventArgs afin de mémoriser les paramètres de l'event.

Il te faut juste créer des attributs, une/des classe(s) (selon le besoin) sérialisable(s) afin de mémoriser les paramètres sans passer par les EventArgs.

Exemple :

Private mMousePos as Point

---

Sub New (... e as EventArgs ...)
...
if TypeEvent=MouseMove Then
mMousePoint=new Point(e.x, e.y)
End if
...
End sub

---

Public readonly property MousePos as Point
    Get
       Return mMousePos
End get
End Property

Puis pour régénérer l'event :
MouseHook.X=mEvent.MousePos.X

MouseHook.Y=mEvent.MousePos.Y

Voilà.
Et c'est presque pareil pour la classe.

http://nhen0039.chez-alice.fr/index.php
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
9 sept. 2008 à 16:23
ah oui je crois que j'entrevois une solution ben ça va pas etre facile j'en ai pour 1 moment à faire et à tester

merci beaucoup de l'éclairage que tu m'as apporté

Bonjour chez vous !
0
Rejoignez-nous