Lecture d'un fichier Hexa [Résolu]

Signaler
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015
-
cs_SEB73460
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015
-
Bonjour,

Pourriez-vous m'indiquer la marche à suivre pour pouvoir lire et affcher le contenu d'un fichier Hexadécimal dans un listview
En effet, je souhaiterai visualiser le contenu d'un fichier .Hex dans un listview comme dans le cas d'un editeur Hexadecimal
- est-ce que je dois convertir ce fichier avec la visu sur le listview ?
Merci pour votre aide
A+

7 réponses

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
salut,

ben, tu fais 16 colonnes puis un truc dans le genre de :

dim fichier as string = "",i as integer
dim fl as long = filelen(fichier)
dim data() as byte
redim data(fl-1)
open fichier for binary as #1
get #1,,data
close #1
dim pages as integer
pages = fl \ 16
for i = 0 to pages - 1
dim li as listitem
set li = ton_listview.items.add(hex$(data(i)))
li.subitems.add(hex$(data(i+1)))
li.subitems.add(hex$(data(i+2)))

li.subitems.add(hex$(data(i+3)))

...
next

if fl mod 16 = 1 then

dim li as listitem


set li = ton_listview.items.add(hex$(data(pages*16)))

end if

for i = 1 to (fl mod 16) - 1
li.subitems.add(hex$(data(pages*16+i)))
next

ShareVB
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
salut,

oupss, j'avais pas fait gaffe que tu voulais du vb.net...

EBArtSoft> je me le suis demandé aussi...

'le cheminde ton fichier
dim fichier as string = ""
'pour lire ton fichier
dim fs as filestream = new filestream(fichier)
dim pages as integer = fs.length \ 16 ' 16 est le nombre de colonnes de ton affichage

'pour chaque ligne entière (16 bytes)
for i as integer = 0 to pages - 1
dim li as listviewitem
'remplit la ligne avec 16 octets
set li = ton_listview.items.add(hex(fs.readbyte()))
li.subitems.add(hex(fs.readbyte()))
li.subitems.add(hex(fs.readbyte()))
li.subitems.add(hex(fs.readbyte()))
...
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 then
dim li as listviewitem
set li = ton_listview.items.add(hex(fs.readbyte()))
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) - 1
li.subitems.add(hex(fs.readbyte()))
next

ShareVB
Messages postés
4531
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
8
Pourquoi dans un listview ?
la plus part des editeurs hexa ont leur propre controle d'affichage et d'edition ce qui leur permait :

1 - d'avoir une plus grand souplesse visuelle
2 - d'afficher plus vite les données
3 - de pouvoir editer les valeurs directement

Je te conseil fortement de créer un controle perso

@+

E.B.
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Merci beaucoup pour ton code ShareVB

Je debute en Vb.net et ce n'est pas tres clair pour moi
 Pourrai tu me mettre un peu de commentaire pour m'aider à comprendre mieux ?

Je te remercie encore pour ton aide

A+ et merci encore
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Merci beaucoup pour ton aide

Par contre, j'ai deux nom pas declaré "i" et "li"
est-ce normal ?
Merci 
A+
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11
salut,

euh, normalement non mais :
dim i as integer
dim li as listviewitem

ShareVB
Messages postés
259
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
5 février 2015

Merci pour ta réponse,
Mla lecture se fait bien dans mon listview, mais a la fin de mon fichier j'ai des
FFFFFFFFF partout
Je souhaiterai egalement qu'a la premiere colonne de mon affichage , le  comptage des lignes se  fasse en Hexa
Mais je pense deja avoir une base solide avec ton bout de code
Je vais etudier cela pour complete mon code
Mes remerciements encore une fois
A+