Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VB4 - Lire un fichier binaire

1 réponse
Avatar
Jeff
Bonjour à tous

Je voudrais récupérer des informations d'un fichier binare disposant de
la structure suivante :

320 caractères: en-tête du fichier
8 caractères : chaine de caractères
8 caractères : binaire (inconnu)
30 caractères: binaire (inconnu)
x caractères: chaine de caractères terminée par zéro

Je voudrais avoir votre avis sur la méthode la plus judicieuse pour
lire les informations de ce fichier avec une commande :

OPEN "..." for BINARY
OPEN "..." for RANDOM

Les 320 caractères n'apparaissent qu'une seul fois (en-tête) alors que
les autres reviennent de manière redondante formant ainsi des
enregistrements séparés.

Si quelqu'un peux me donner un coup de main...

Cordialement

Jeff

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

1 réponse

Avatar
PEx
> Je voudrais récupérer des informations d'un fichier binare disposant de
la structure suivante :

320 caractères: en-tête du fichier
8 caractères : chaine de caractères
8 caractères : binaire (inconnu)
30 caractères: binaire (inconnu)
x caractères: chaine de caractères terminée par zéro

Je voudrais avoir votre avis sur la méthode la plus judicieuse pour
lire les informations de ce fichier avec une commande :

OPEN "..." for BINARY
OPEN "..." for RANDOM

Les 320 caractères n'apparaissent qu'une seul fois (en-tête) alors que
les autres reviennent de manière redondante formant ainsi des
enregistrements séparés.



Salut,

J'ouvrirais le fichier en mode Binary et ne lirais que des tableaux d'octets
ou des octets un par un dans le cas de la chaine de caractère terminée par
0. Dans le genre :


Dim iFichier as Integer
Dim sFichier As String

Open sFichier For Binary As iFichier

Dim bBuffer() As Byte
Redim bBuffer(319) ' 0 à 319 = 320 octets
Get iFichier,1, bBuffer() ' Lecture de l'entête

Dim lPosition As Long ' Position dans le fichier
Dim bChaine1(7) As Byte ' Chaine de 8 caractères
Dim bCaractere As Byte ' 1 Caractère
Dim sChaine2 As String


lPosition = 320
While ' ... petite boucle jusqu'a la fin
Get iFichier, lPosition, bChaine1() 'Lecture de la première chaine
lPosition = lPosition + 46
Get iFichier , lPosition, bCaractere
lPosition = lPosition + 1
While bCaractere <> 0 'Lecture de la dernière chaine
jusqu'au
sChaine2 = sChaine2 & Asc(bCaractere) ' En supposant que les
caractères sont codés en ASCII
Get iFichier , lPosition, bCaractere
lPosition = lPosition + 1
Wend
lPosition = lPosition + 1
Wend



-------------
PEx.