Extraire structure d'un fichier binaire

Résolu
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 - 14 août 2012 à 19:08
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 - 15 août 2012 à 19:09
Bonjour,

Bon j'ai une question voir deux de débutant mais là je trouve pas.

Déjà en C# pour déclarer une structure de données fixe on est obligé de passer par du code unsafe ??? ça m'étonne . bref ceci est accepté par mon compilateur mais j'aime pas du tout

unsafe struct TESTSTRUCT
{
fixed char 	abc[10];
Int32           def;
}


Maintenant comment effectuer la lecture de ma structure dans un fichier binaire ??? le passage par un streamreader est-il conseillé ?
J'ai ce code pour l'instant mais je sais pas faire le read
// Ouverture du stream sur fichier binaire
FileStream streamTest=new FileStream(FileName,FileMode.Open,FileAccess.Read);
StreamReader srTest=new StreamReader(streamTest);
// Lecture du Header
TESTSTRUCT tst;
srTEST.Read(???????????????????????????????????????????????????? // bref je sais pô !!!
// Fermeture du stream sur fichier binaire
srTest.Close();
streamTest.Close();


D'avance merci pour toute aide sur ces 2 points qui me chagrine...

4 réponses

cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 3
15 août 2012 à 19:09
Finalement je suis repassé par un BinaryReader...Bien Mieux ! fini le unsafe et le fixed.
http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx

J'ai toujours mes structures mais je lit chacune des valeurs à la main (façon de parler) et non pas la structure d'un coup...

EXEMPLE:
struct TEST
{
char []Nom;
Int32 age;
}

.../...
TEST tst=new TEST;
BinaryReader binReader=new BinaryReader(File.Open(TestFile,FileMode.Open));
tst.Nom=binReader.ReadChars(10);
tst.age=binReader.ReadInt32();
etc...etc..
2
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 3
15 août 2012 à 10:05
Bon beh je vais pas réinventer la roue...

Ici les explication que j'ai trouvé => http://projets.infos.free.fr/Algorithmie/CSharp_AccesFichiers.htm

Ici une classe assez complête d'accès aux fichiers => http://projets.infos.free.fr/Algorithmie/FileReader.cs
1
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 3
15 août 2012 à 09:48
OK bon beh après quelques recherches...y'a pas moyen simplement comme en c++...j'ai vu des technique avec Marshall mais moi les Sherifs j'accroche pas...

1-> Pour les structure de taille fixe..rien a faire faut vraiment déclarer du unsafe fixed.... comme suit:
public unsafe fixed byte tableau[12];


2-> Pour la lecture simple de structure je vais me tourner vers mes bonnes vieilles fonctions fopen, fread et fclose de mon C++ qui me manque parfois...

Bon si j'y arrive je posterais ma classe lecture structure dans fichier binaire ici...

A+
0
cs_Capa6T Messages postés 36 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 15 août 2012 3
15 août 2012 à 10:07
Décidément j'ai une fâcheuse tendance à poser des questions et a me répondre moi même...
0
Rejoignez-nous