Structure et fichier à accès direct (invalide)

Résolu
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007 - 6 juin 2007 à 14:19
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007 - 6 juin 2007 à 15:29
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

Utilisateur anonyme
6 juin 2007 à 15:15
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
6 juin 2007 à 14:24
il aime surement pas que tes tableaux n'aient pas une taille fixe

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
6 juin 2007 à 14:35
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...
0
Utilisateur anonyme
6 juin 2007 à 14:38
Salut,

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







__________
Kenji

(


Nouveau forum VBA/Office
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
6 juin 2007 à 14:45
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
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
6 juin 2007 à 14:54
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...
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
6 juin 2007 à 15:00
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...
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
6 juin 2007 à 15:06
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...
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
6 juin 2007 à 15:16
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...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
6 juin 2007 à 15:21
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
0
Utilisateur anonyme
6 juin 2007 à 15:24
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
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
6 juin 2007 à 15:29
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...
0