[VB6 -> VB.NET] Lire un fichier binaire (structure connue)

forzacodm - 2 avril 2013 à 01:00
 forzacodm - 2 avril 2013 à 10:12
bonjour tout le monde,
je travaille sur une application en VB.net en relation avec mes études. au stade où je suis, je dois lire le contenu d'un fichier .his (binary file) dont la structure m'a été donnée par son éditeur (voir en bas). je voudrai donc stocker les données qui s'y trouve dans un fichier excel.

structure du fichier .HIS:

(HIS): Type de fichier binaire est utilisé pour stocker des données thématiques qui doit être liée à des couches de carte. L'ensemble de données dans un fichier HIS peut être en trois dimensions, c'est à dire qu'il peut avoir un ou plusieurs paramètres, la localisation et l'extension du fichier est timestep. Une description du fichier est donné ci-dessous.

1.1 En-tête
Le fichier contient un en-tête, qui est constitué de:
• trois fois 40 caractères ASCII comme des lignes de commentaires
• Exactement 40 caractères ASCII, afin d'indiquer l'heure de début de pas de temps = 0 de la manière suivante:
T0: ~ ~ aaaa.mm.jj hh: mm: (! ~ Désigne un espace) ss ~ ~ (scu = ~ ~ ~ ~ ~ ~ ~ 1s)

- Un exemple (SCU = secondes d'horloge système unitaires):
T0: 01/01/1990 12:00:00 (scu = 1s)


1.2 Description des paramètres et des lieux
La partie suivante du fichier indique le nombre de paramètres et de segments, suivis par les noms de paramètres et par les noms de lieux:
• des nombres entiers de 4 octets, ce qui représente le nombre de paramètres de sortie (NOout) et le nombre d'emplacements (NOseg);
• NOout chaînes de 20 caractères ASCII, contenant une description de chacun des paramètres de sortie. l'unité est ajoutée entre parenthèses, par exemple:

Res.time [d]
Volume [m3]

• NOseg * (nombre de 4 octets + une chaîne de 20 caractères). Le nombre est un entier et la chaîne contient une description pour chacun des emplacements de sortie (par exemple les identifiants de branche ou un segment identifiants, etc.) Par exemple:
emplacement 1
- Branche 26
- Noeud 89

1.3 La partie "données":
La prochaine partie du fichier contient (NOout * NOseg +1) chiffres par pas de temps:

• un nombre entier de 4 octets représentant le temps. L'appareil est en unités d'horloge du système. Si votre unité d'horloge du système est égal à 1 seconde comme dans l'exemple ci-dessus, puis donner le temps en secondes. Si votre unité d'horloge système est de 86400 secondes (= 1 jour), puis votre temps sera en jours.
• NOout * NOseg réel de 4 octets représentant les valeurs des paramètres de sortie dans le segment NOout 1, les valeurs des paramètres de sortie dans le segment NOout 2, etc
• Cette opération est répétée pour tous les pas de temps (temps NOstep)

S'il vous plaît noter que les chiffres vont commencer à la position (168 + 20 + NOout * NOseg * 24). L'unité de temps est unités d'horloge de système.
La longueur totale d'un fichier d'historique peut être calculé comme suit:
Longueur totale = 168 + 20 + NOout * NOseg * 24 + 4 * NOTIM * (* NOout NOseg +1)

merci pour votre aide.

3 réponses

Utilisateur anonyme
2 avril 2013 à 02:57
Tu n'auras pas plus de réponses en répétant la même question à répétition. Je t'ai mis d'autres liens sur ton autre fil.
0
Utilisateur anonyme
2 avril 2013 à 03:00
D'autant plus que de poser une question dans la section VB6 alors que tu programmes en VB.net ne te mèneras pas bien loin.
0
merci cmarcotte, comment est ce que je peux supprimer cette discussion?
0
Rejoignez-nous