Extraire structure d'un fichier binaire [Résolu]

cs_Capa6T 36 Messages postés vendredi 5 décembre 2003Date d'inscription 15 août 2012 Dernière intervention - 14 août 2012 à 19:08 - Dernière réponse : cs_Capa6T 36 Messages postés vendredi 5 décembre 2003Date d'inscription 15 août 2012 Dernière intervention
- 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...
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_Capa6T 36 Messages postés vendredi 5 décembre 2003Date d'inscription 15 août 2012 Dernière intervention - 15 août 2012 à 19:09
2
Merci
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..

Merci cs_Capa6T 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 126 internautes ce mois-ci

Commenter la réponse de cs_Capa6T
cs_Capa6T 36 Messages postés vendredi 5 décembre 2003Date d'inscription 15 août 2012 Dernière intervention - 15 août 2012 à 10:05
1
Merci
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
Commenter la réponse de cs_Capa6T
cs_Capa6T 36 Messages postés vendredi 5 décembre 2003Date d'inscription 15 août 2012 Dernière intervention - 15 août 2012 à 09:48
0
Merci
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+
Commenter la réponse de cs_Capa6T
cs_Capa6T 36 Messages postés vendredi 5 décembre 2003Date d'inscription 15 août 2012 Dernière intervention - 15 août 2012 à 10:07
0
Merci
Décidément j'ai une fâcheuse tendance à poser des questions et a me répondre moi même...
Commenter la réponse de cs_Capa6T

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.