JeremyNeReculeraPas
Messages postés64Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention 6 juin 2007
-
24 mai 2007 à 17:14
JeremyNeReculeraPas
Messages postés64Date d'inscriptionmercredi 4 avril 2007StatutMembreDerniè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..
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
JeremyNeReculeraPas
Messages postés64Date d'inscriptionmercredi 4 avril 2007StatutMembreDerniè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!
JeremyNeReculeraPas
Messages postés64Date d'inscriptionmercredi 4 avril 2007StatutMembreDerniè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..