Erreur en lecture de fichier hexa

Fabk01 Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2005 - 2 avril 2005 à 19:01
Fabk01 Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2005 - 3 avril 2005 à 15:41

7 réponses

Fabk01 Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2005
2 avril 2005 à 19:04
Bonjour à tous


J'ai sérieusement besoin d'aide au risque de finir par atomiser mon pc
qui pourtant doit être innoscent mais vous saver ce que c'est quand y a
des erreurs c'est jamais de la faute du coupable


Enfin bref venons en au fait


Je dois lire un fichier Hexa en particulier l'entête.


Dans cet entête se trouve une info placé après un certain offset.


Elle est écrite en hexa mais codée en décimal, je m'explique si la
valeur hexa lue est (10)h la donné en décimal à affiché est bien 10 et
non 16 jusque là C assez clair je pense.


donc j'ouvre le fichier en binary mode et je lit 4 caractères ASCII (donc 8 chifre hexa que je sépare en 4 groupes) .


par la commande suivante je convertis ce caractère Ascii pour afficher la valeur Hexa:





Text1.Text = Hex(Asc(trame(1))) 'où Tram(1) est la première case d'un tableau de 4 cases





ça marche impécable


Mais quel est donc le problème dans ce cas????


He bien quand la valeur hexa à lire est (22)h donc le caractère ascii
( " ), VB me donne une valeur qui n'a rien à voir .


j'ai d'abord cru que le programme allait lire au mauvais endroit mais
si à l'aide d'un editeur hexa je met (23)h à la place de (22)h ça passe
j'obtient bien 23 et si je met 21 pareil, ça marche.


Alors voila si quelqun peut me venir en aide pour me dire quoi faire
hormis appeler un exorciste ou d'atomiser mon pc car encore une fois je
parie que je suis bien le seul au monde à ne pas être au courant de la
petite subtilité que vous aller m'expliquer .


Merci
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
2 avril 2005 à 19:45
Salut, ton prob m'a étonné alors j'ai testé ça et ça fonctionne bien chez moi :

'un fichier avec le caractère ( " ) dedans
Dim s As String
Open "c:\temp\toto.txt" For Binary Access Read As #1
s = Input(1, #1)
Close #1
Text1.Text = Hex(Asc(s))

Peut être que ça dépend de la manière dont tu lis le fichier ? Ou du type de ton tableau tram() ?

Loup Gris
0
Fabk01 Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2005
2 avril 2005 à 20:27
Voila la partie du code concerné





Dim trame(4) As String * 1



Open File1.Path & "" & File1.FileName For Binary Access Read As #intFNum

For offset = 19 To 23

Seek #intFNum, offset

Input #intFNum, trame(j)

j = j + 1

Next offset

Close intFNum



Text1.Text = Hex(Asc(trame(1)))

j'ai beau refaire et refaire les test Trame(1) ne contiend pas (")
0
cs_Safireo Messages postés 55 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 24 février 2011
3 avril 2005 à 00:57
'un de mes prog necessite d'aller voir ce qui se passe dans le fichier. j'utilise ce code :



Function LIRE(
ByVal FICHIER
As
String,
ByVal OCTET
As
Integer,
ByVal NOMBRE
As
Integer)
As
String



'fichier est le chemin d'accès du fichier
Dim CHAINE
As
New
String("", NOMBRE) 'nombre est la taille de la chaine

FileOpen(2, FICHIER, OpenMode.Binary)


FileGet(2, CHAINE, OCTET) 'octet est l'offset du 1er octet lu


FileClose(2)



Return (CHAINE)



End
Function

'avant de faire ta conversion, teste un truc du genre text1.text=chaine afin de voir ce que ça a récupéré...

'++
'safireo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Safireo Messages postés 55 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 24 février 2011
3 avril 2005 à 00:59
g oublié de préciser, c du .net
je sais pas si ça change qqch, g oublié le vb6
0
mjpmjp Messages postés 115 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 29 juin 2012
3 avril 2005 à 15:14
salut c JP
une question : ton code 22 correspond à ( " ), as tu testé avec le code de ( ' ) juste pour savoir si çà interfere dans le code ?

Bidouille ... Débrouille ... Euuh !?... m' Embrouille .!!! @+ JP
0
Fabk01 Messages postés 10 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2005
3 avril 2005 à 15:41
pas besoin d'esseiler pour te dire oui puisque dans la fonction input un" était un caractère ' singifie lors de la lecture un saut de colonne mais bon mon probmème est résolu grâce au lougaroup
0
Rejoignez-nous