Fabk01
Messages postés10Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 2 avril 2005
-
2 avril 2005 à 19:39
AZEazeazgfafaazea
Messages postés58Date d'inscriptionjeudi 30 décembre 2004StatutMembreDernière intervention21 septembre 2007
-
3 avril 2005 à 23:13
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:
Open File1.Path & "" & File1.FileName For Binary As #intFNum
For offset = 1921 To 1924
Seek #intFNum, offset
Input #intFNum, trame(j)
j = j + 1
Next offset
Close intFNum
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. J'ai alors penser
que la convertion pouvais avoir un problèmes avec ce caractère mais il
n'en est rien, si je fais
trame(3) = """
Text3.Text = Hex(Asc(trame(3)))
Le résultat obtenu est bien 22
J'en déduit que le problèmes est dans la lecture
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 .
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 2 avril 2005 à 20:57
Donc, ça devrait marcher avec ça :
Dim trame(4) As String * 1
Dim j As Integer
Dim offset As Long
Open File1.Path & "" & File1.FileName For Binary Access Read As #intFNum Len = 1
For offset = 19 To 23
Get #intFNum, offset, trame(j)
j = j + 1
Next offset
Close #intFNum
MsgBox trame(0)
Fabk01
Messages postés10Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 2 avril 2005 2 avril 2005 à 20:36
la suite est donné dans la partie j'ai besoin d'aide, (j'ai posté deux
fois le même truc car je l'avais mit dans j'ai besoin d'aide et puis
j'ai penser que de TEXTE ça irrait plus vite pour obteir une réponce
enfin bref)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 2 avril 2005 à 20:44
Daniel> la virgule, les guillemets sont des caractères de séparation réservé pour Input.
Plus d'explication stp, le msdn dit justement que :
Contrairement à l'instruction Input #, la fonction Input renvoie
tous les caractères lus, y compris les virgules, les retours chariot, les sauts
de ligne, les points d'interrogation et les espaces à gauche
<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.
Fabk01
Messages postés10Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 2 avril 2005 2 avril 2005 à 20:54
je précise que je suis pas du tout informaticien mais electronicien
donc il serait cool de me mettre mon code et eventuellement me mettre
ce qui va pas en couleur (rouge) et ce que je devrais mettre à la place
en vert ou un truc du genre