Calculer la taille d'un fichier exe [Résolu]

Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Dernière intervention
8 novembre 2011
- - Dernière réponse : fabulofr
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
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 ..
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
102
Date d'inscription
jeudi 31 mars 2005
Dernière intervention
29 avril 2007
3
Merci
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++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Messages postés
102
Date d'inscription
jeudi 31 mars 2005
Dernière intervention
29 avril 2007
0
Merci
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+
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Dernière intervention
8 novembre 2011
0
Merci
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.
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Dernière intervention
8 novembre 2011
0
Merci
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 ?
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Dernière intervention
11 mars 2006
0
Merci
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
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Dernière intervention
8 novembre 2011
0
Merci
Un grand merci !! ca marche !!!!
TU ES UN ROI !!
MERCI !!!!!!!!!!!!!!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.