Aide sur la lecture d'un fichier Hexadecimal [Résolu]

Signaler
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015
-
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015
-
Bonjour et bon dimanche à tous

J'effectue le lecture d'un fichier Hexa dans un listview, à la fin de ma lecture si la ligne est incomplete je retrouve des "FFFF" jusqu'à la fin de ma ligne
Peut-on eviter cela, c'est à dire que la lecture de mon fichier s'arrete si il n 'y a plus de données dans mon fichier ?

Mes remerciements pour votre aide

Voici mon code :

Dim i
As
Integer

Dim li
As ListViewItem

Dim compteur
As
Integer

'Le chemin du fichier

Dim fichier
As
String =
""
'Configuration de la boite de dialogueOpenFileDialog1.Title "Ouvrir fichier hexad‚cimal"OpenFileDialog1.InitialDirectory Application.StartupPath &

""OpenFileDialog1.Filter =

"Fichier hexad‚cimal (*.hex)|*.hex"OpenFileDialog1.FilterIndex = 1

OpenFileDialog1.RestoreDirectory =

True

'Ouverture de la boite de dialogueOpenFileDialog1.ShowDialog()

'Lecture du fichier

Dim fs
As FileStream =
New FileStream(OpenFileDialog1.FileName, FileMode.Open) 

'Boucle pour le comptage en Hexa de la colonne d'adresses

'Compte de 0 … la fin du fichier \ 16

For compteur = 0
To fs.Length \ 16

'Comptage en Hexa dans la colonne d'adresses "00000000"li = ListView1.Items.Add(compteur.ToString(

"X").PadLeft(7,
"0").PadRight(8,
"0")) 

'16 est le nombre de colonnes de l'affichage

Dim pages
As
Integer = fs.Length \ 16

'Pour chaque ligne entiŠre (16 bytes)

For A
As
Integer = 0
To pages - 1

Next 

'Remplit la ligne avec 16 Octets de 2 bits chacun "00" "1F"li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))

Next

'Si il reste une ligne incomplŠte, moins de 16 octets de la position en cours … la fin du fichier

If fs.Length
Mod 16 > 1
Thenli = ListView1.Items.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))

End
If

'Pour chaque octet suppl‚mentaire de la ligne incomplŠte jusqu'… la fin du fichier

For i = 1
To (fs.Length
Mod 16) - 1li.SubItems.Add(fs.ReadByte.ToString(

"X").PadLeft(2,
"0"))

Next

5 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
pas de là ton erreur, mais étrange ton test puis ta boucle finale....

If fs.Length Mod 16 > 1 Then
li = ListView1.Items.Add(fs.ReadByte.ToString("X").PadLeft(2, "0"))
EndIf
For i = 1 To (fs.Length Mod 16) - 1
li.SubItems.Add(fs.ReadByte.ToString("X").PadLeft(2, "0"))
Next

pourquoi ne pas avoir fait, par exemple :

If fs.Length Mod 16 > 1 Then
For i = 1 To (fs.Length Mod 16)
li.SubItems.Add(fs.ReadByte.ToString("X").PadLeft(2, "0"))
Next
End If
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Salut,

Vérifie ton, code je vois une boucle qui sert pas, et les ajouts de subitems que tu peux mettre dans une boucle.







__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Salut,
Simple curiosité, qu'est-ce qu'un fichier hexadécimal ?

<hr size="2" width="100%" />Julien.
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Voici un exemple de fichier que j'ouvre :
(Comptage en Hexadecimal)
adressses  000000     0A 0C 01 05 09 0F FF 00 03
                 000009    00 0D 00 0E 0E 07 08 00 01  ' fin du fichier

A la fin de mon fichier dans mon listview j'ai une ligne supplementaire avec des "FFFFFF"
Je ne sais pas d'ou cela sort ?
Merci 
A+