Calculer la taille d'un fichier exe

Résolu
fabulofr Messages postés 116 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 8 novembre 2011 - 11 sept. 2005 à 18:56
fabulofr Messages postés 116 Date d'inscription lundi 15 décembre 2003 Statut Membre Derniè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 ?

Merci a tous ceux qui me repondront !!
LGB ..

6 réponses

VBSorcier Messages postés 102 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 29 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)

ca te va ??

a++
3
VBSorcier Messages postés 102 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 29 avril 2007
11 sept. 2005 à 19:23
la reponse est toute simple :
Open Emplacement For Input As 1
TailleduFichier = LOF(1)
Close #1

'LOF = Len Of File , longueur du fichier

mais il y a encore + simple :

TailleduFichier = FileLen(Emplacement)

pour plus d'info va voir dans l'explorateur d'objet, dans la classe "FileSystem"
voila

a+
0
fabulofr Messages postés 116 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 8 novembre 2011 1
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


en surlignant la ligne avec le get.
0
fabulofr Messages postés 116 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 8 novembre 2011 1
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 ?
0

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

Posez votre question
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
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

jpleroisse
0
fabulofr Messages postés 116 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 8 novembre 2011 1
11 sept. 2005 à 22:34
Un grand merci !! ca marche !!!!
TU ES UN ROI !!
MERCI !!!!!!!!!!!!!!!
0
Rejoignez-nous