Enregistrer tableau dans fichier à acces direct

JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007 - 24 mai 2007 à 17:14
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007 - 29 mai 2007 à 08:46
Bonjour à tous!!!

J'ai un petit problème..

J'ai une classe:

Public

Class SasN

Public StatusSas
As
Long

Public in_PORTE(4)
As
Byte

Public in_NomPorte(4)
As
String

Public in_Supp_interVerrou
As
Boolean

Public in_Formol_EC
As
Boolean

Public in_Formol_OK
As
Boolean

Public stat_P_Pre_epur
As
Integer

Public stat_P_Formol
As
Integer

Public stat_M_ouvre(4)
As
Boolean

Public stat_Aut_ouvre(4)
As
Boolean

Public stat_Etat
As
Byte

Public stat_Tempo1
As
Integer

Public stat_P_nok_lock
As
BooleanEnd

Class

Et j'instancie un objet :  Public

SasN1
As
New SasN

--->Mon but est d'enregistrer cet objet(et ces propriétés) dans un fichier à acces direct(comme ca ce fait tout naturellement en VB6). J'arrive bien à calculer la taille en octet de l'objet comme il est necessaire(avec ma ptite fonction LenSasN1) pour ouvrir le fichier:
FileOpen(Canal, CFG_FILE_NAME, OpenMode.Random, , , LenSasN1())

--->Mais lorsque je veux écrire l'objet dans le fichier avec: FilePutObject(Canal, SasN1, Num)

à l'éxecution ca me met : "L'E/S de fichier de type "SasN1" n'est pas valide"
Alors j'ai bien essayé de sérialiser ma classe car _FABIEN dans un précedent message l'avait fait pour des structures, mais ca ne marche pas... Est-ce parcequ'il y a des tableaux comme propriétés de mon objet  je ne sais pas et ca me gene beaucoup!!

Si quelqu'un a voit une solution je lui en serais très reconnaissant!!Meme si la seule solution est d'utiliser un autre type de fichier je prend quand meme..

MERCI d'avance!
peace

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

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 mai 2007 à 21:25
Salut
Oui, c'est normal puisque ta structure n'a pas de taille fixe : Ta variable in_NomPorte
est de type String, donc, de longueur inconnue.
Si tu voulais y stocker un champ texte de 4 caractères (et non pas 4 variables de type Chaine), il te faut la déclarer As Byte et convertir String <--> Byte
Je ne sais pas si sous .Net on a le droit à ce type de définition qui pourrait aussi résoudre ton problème :
Public in_NomPorte(4) AsString * 12
où le "* 12" définit un champ de type String mais de longueur fixe de 12 caractères.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
JeremyNeReculeraPas Messages postés 64 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 6 juin 2007
25 mai 2007 à 09:13
Merci pour ta reponse! J'étais trop fatigué hier pour y penser.. le as string*9 n'est plus pris en charge en vb.net mais l'autre solution ( conversion string-->byte) marche très bien et me suffit!
Encore merci.
Au plaisir!

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
29 mai 2007 à 08:46
Bonjour!!
En fait ca ne suffit pas a résoudre le problème, toujours la meme erreur... Je ne comprend pas pourquoi il ne trouve pas ca valide..Je cherche..

Ce qui se conçoit bien s'énonce clairement...
0
Rejoignez-nous