Structure et fichier à accès direct (invalide)

[Résolu]
Signaler
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
Bonjour à tous!

Alors la j'ai une question à poser aux super bons du vb.net!!(s'il veulent bien la lire, puis m'aider si possible..). Je l'avais déja posté mais je m'étais mal expliqué.
Meme un MVP sur un forum anglais n'a pas su répondre à cette question....:

J'ai une structure(voir ci-dessous) que je veu enregistrer dans un fichier à accès direct avec "fileputobject(canal,MaStructure,num)". Or, à l'execution l'exception: 'FilePutObject' de la structure 'MaStructure' n'est pas valide.est levée!!! Et meme en donnant l'attribut <serializable> à ma structure , toujours la meme erreur... J'ai pourtant bien défini le nombre de lignes de mes tableaux et la taille en octets de la structure avant le fileputobject() mais il veu rien savoir!

Public

Structure MaStructure
 

  Public StatusSas
As
Byte

   Public in_PORTE()
As
Byte

   Public in_NomPorte()
As
Byte

   Public in_Supp_interVerrou
As
Boolean

   Public in_Formol_EC
As
Boolean

   Public in_Formol_OK
As
Boolean

   Public stat_P_Pre_epur
As
Byte 

   Public stat_P_Formol
As
Boolean

   Public stat_M_ouvre()
As
Boolean

   Public stat_Aut_ouvre()
As
Boolean

   Public stat_Etat
As
Byte

   Public stat_Tempo1
As
Byte 

   Public stat_P_nok_lock
As
Boolean

End
Structure

Si quelqqu'un pouvait m'aider, je lui en serais très reconnaissant!!!
Merci d'avance.
Peace

Ce qui se conçoit bien s'énonce clairement...

12 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Tiens, la serializabilation (je sais pas si on peux dire comme ca) et pourtant très simple :
Regarde cet exemple :
http://www.devcity.net/Articles/113/1/dotnet_serialization.aspx







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
il aime surement pas que tes tableaux n'aient pas une taille fixe

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

Mais comme je l'ai dit dans ma question, avant le file put j'ai définila taille des tableaux avec :ReDim

SasN1.in_PORTE(NBPSMAX - 1)

ReDim SasN1.in_NomPorte(NBPSMAX - 1)

ReDim SasN1.stat_M_ouvre(NBPSMAX - 1)

ReDim SasN1.stat_Aut_ouvre(NBPSMAX - 1)
Car en vb.net les tableau faisant partie d'une structure ne peuvent etres déclarés avec une taille initiale.
Merci quand meme!

Ce qui se conçoit bien s'énonce clairement...
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Salut,

Donne aussi le code que tu utilise pour enregistrer.
En principe, les tableau sans taille fixes passent.







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Si tu donne l'attribut serialyzable à ta structure, alors pourquoi ne pas la sérialiser ensuite ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

Tout ce que vous voudrez:

D'abord:


Private



Sub
OpenFile()


   Dim
lenSas

As



Integer

   Canal = FreeFile()
   lenSas = LenSasN1()  'taille de mon tableau calculée par une petite fonction perso(peut etre que l'erreur vien de la mais j'ai de gros doutes)


   Try

      FileOpen(Canal, CFG_FILE_NAME, OpenMode.Random, , , lenSas)


   Catch
ex

As
Exception
   MsgBox(ex.Message)


   End



Try






End



Sub
ensuite:




Private






Sub
WriteFile(

ByRef
Num

As



Short
)   FilePutObject(Canal, SasN1, Num)<-------- ici se trouve l'erreur!


End



Sub



puis:

Private
Sub CloseFile()   FileClose(Canal)

End
Sub
voili!

encore merci!
Ce qui se conçoit bien s'énonce clairement...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

Pour répondre a la question de casy, je ne maitrise pas du tout la serialisation, et j'ai cru que peut etre par magie , le fait que l'on donne cet attibut à la structure celle-ci allée pouvoir etre enregistrée sous forme de byte dans un fichier à accès direct.Mais en effet j'ai bien vu des codes de sérialisation mais tou ceci me parait bien compliqué à coté d'un très simple fileputobject() si ce dernier fonctionne.. Au fait j'éffectue la migration d'un projet VB6 vers un VB.net et dans le projet de base fileputobject était utilisé)

Ce qui se conçoit bien s'énonce clairement...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

La serialisation est-elle obligatoire pour cet enregistrement?En tout cas en VB6 tous ceci marche parfaitement...dommage que le boss veuille du vb.net..

Ce qui se conçoit bien s'énonce clairement...
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

Dites moi please?
Est-ce parcque je pose une question stupide, je fais une super-giga grossière erreur dans mon code ou parceque vous n'avez pas la solution qu'a ce moment la plus personne ne répond???

Merci tout de meme à tous ceux qui auront essayé!
++

Ce qui se conçoit bien s'énonce clairement...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Ou là, t'affole pas.

N'oublie pas que l'on est tous ici bénévoles.
Entre les réunions avec le boss, les clients au téléphone, etc ...., il n'est pas toujours possible de rester en permanence devant le forum

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Disons que ton code n'est pas vraiment en bon dotnet mais plutot en vb6.
En .net on utlise plutôt les Stream ou la Serialization







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
64
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
6 juin 2007

Non bien sur casy je comprend tout à fait, j'ai juste cru que ca allait faire comme la dernière fois pour la meme question, mais je me suis trompé! Milles excuses, surtout pour toi casy qui a l'air très très touché.... mais je posais cette question au cas ou (étant donné mon niveau) j'avais écrit dans mon code une absurdité.

Autrement merci beaucoup charlesRacaud pour le lien , ca a l'air très simple en effet je n'était pas tomber sur un truc aussi bien pendant mes recherches.
Je me lance!!

Nonobstent, pour le file put object personne n'arrive à trouver le truc donc je vais péniblement accepter la réponse mais bon..

Merci merci
+++

Ce qui se conçoit bien s'énonce clairement...