fabulofr
Messages postés116Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention 8 novembre 2011
-
11 sept. 2005 à 18:56
fabulofr
Messages postés116Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention 8 novembre 2011
-
11 sept. 2005 à 22:34
Bonjour a tous !
J'ecris un ptit message dans ce forum, car j'ai un petit probleme.
J'ai essayé plein de methodes présentes ici, et aucune ne marche. Voila la derniere testé :
Dim strLine As Variant
strPath = Emplacement '(emplacement du fichier)
Open strPath For Input As #1
While Not EOF(1)
Input #1, strLine
MsgBox Len(strLine)
Wend
Close #1
en sachant que la donnée strline contient le fichier complet, le prog m'indique en msgbox 954, pour un prog .exe qui en fait 960 octets.
Comment faire. ???
Mon but, c'est de lire un fichier .exe, et d'afficher une msgbox avec la longueur EXACTE du fichier.
Je penses que cela est dût aux carateres nuls contenus dans un exe. Qu'en pensez vous ?
COmment l'outrepasser, sachant que je n'aimerais pas me servir des APIs windows, vu que j'y comprends rien, et que ce qui me plait avant tou, c'est de comprendre ?
VBSorcier
Messages postés102Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention29 avril 2007 11 sept. 2005 à 21:57
je vais repondre a tes 3 questions d'un coup !!!
deja le pb "erreur 458" c'est parce tu n'a pa declaré "a" comme il faut...
le "GET" te retourne une valeur "As Byte" (valeur de 1 octet, donc 8 bit, donc du decimal entre 0 et 255)
'=================
Dim ByteLu as Byte
Open Fichier for binary as 1
Get #1,1,ByteLu
Close #1
'=================
ici ByteLu peut avoir une valeur entre 0 et 255
si tu veu de l'hexa il faut juste rajouter
ByteLuHexa= Hex(Clng(ByteLu))
Clng(xx) converti le "As Byte" en "As Long"
Hex(xx) converti le "As Decimal" en "As Hexa"
(le "As Decimal" et "As Hexa" n'existe pas C pour le fun)
maintenant la fonction entiere pour ta question :
'A declarer en haut de ton code
Private TblByte ()
Function LireExe (FileName as string,NbrByte as long)
Dim ByteTmp As Byte
Redim TblByte(NbrByte)
Open FileName For Binary As 1
For i = 1 to NbrByte
Get #1,i,ByteTmp
TblByte(i)=Hex(Clng(ByteTmp))
Doevents 'pour eviter que ca plante
Next i
Close #1
End Function
bon voila la fonction dans les grandes lignes
je te laisse l'agrémenter, avec des verifs pour voir si NbrByte est superieur a la taille du fichier
et dans ce cas mettre NbrByte = LOF(file)
(j'ai pa testé la fonction je l'ai ecrite direct sur le site donc peut etre ya des erreurs)
fabulofr
Messages postés116Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention 8 novembre 20111 11 sept. 2005 à 19:46
Oki merci, alors maintenant, la chose qui deconne, c'est que je voudrais afficher par msgbox un octet bien defini, ou alors sa valeur en hexa. j'ai fait ca:
Open Emplacement For Binary Access Read As #1
Get #1, 1, a
Close #1
MsgBox a
visual basic mlet en message d'erreur :
run time error 458
Variables uses an automation type not supported in visual basic
fabulofr
Messages postés116Date d'inscriptionlundi 15 décembre 2003StatutMembreDernière intervention 8 novembre 20111 11 sept. 2005 à 19:52
Alors en fait pour etre plus precis, je voudrais connaitre la longueur d'un fichier, creer un tableau equivalent a la longueur de fichier (environ 1000 octets, pas plus), lire chaque bytes (octets) d'un fichier executable (.exe), et transcrire ces donnees dans le tableau avec leurs codes hexadecimales. Je sais pas si c'est clair ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 11 sept. 2005 à 20:40
Bonsoir,
Voici pour la taille d'un fichier.exe.
Private Sub Command1_Click()
Dim strfile
strfile = "C:\Program Files\Accessoires\MSPaint.exe"
MsgBox strfile & " fait " & FileLen(strfile) & " octets"
End Sub