AVOIR LA TAILLE D'UN FICHIER AVEC LA BONNE UNITÉ

cs_Repie Messages postés 103 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 5 mars 2006 - 7 févr. 2002 à 18:31
Psychotronic Messages postés 21 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 17 décembre 2008 - 7 févr. 2008 à 22:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/2559-avoir-la-taille-d-un-fichier-avec-la-bonne-unite

Psychotronic Messages postés 21 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 17 décembre 2008
7 févr. 2008 à 22:07
Voici mon code :

Function ConvertFileLength(ByVal length As Long, Optional ByVal maxdecimal As Integer = 2) As String
' Convertis la taille d'un fichier en octets sous forme d'une chaîne de caractères avec l'unité correspondante
Dim SizeString As String = Nothing If length > 1073741824 Or length 1073741824 Then SizeString length / 1073741824 & " Go" If length > 1048576 And length < 1073741824 Or length 1048576 Then SizeString length / 1048576 & " Mo" If length > 1024 And length < 1048576 Or length 1024 Then SizeString length / 1024 & " Ko"
If length < 1024 Then SizeString = length & " octets"
If SizeString.Contains(",") Then
Dim parts() = Split(SizeString, ",")
Dim parts_() = Split(parts(1), " ")
Dim decimals As Integer If maxdecimal 0 Then maxdecimal 1
If parts_(0).ToString.Length < 2 Then decimals = parts_(0).ToString If parts_(0).ToString.Length 3 Then decimals parts_(0).ToString.Remove(1, parts_(0).ToString.Length - 1)
If parts_(0).ToString.Length > 3 Then decimals = parts_(0).ToString.Remove(maxdecimal, parts_(0).ToString.Length - maxdecimal)
SizeString = parts(0) & "," & decimals & " " & parts_(1)
End If
Return SizeString
End Function

L'option maxdecimal évite d'avoir un nombre inconsidéré de décimales ^^
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
18 juin 2006 à 21:49
Le problème vient de FileLen. Je viens de faire le test avec un iso de Debian (Vresion DVD) 4,36 Go (4.685.895.680 o) et FileLen me retourne ceci : 390928485

Il y a une petit différente !

Il sont passé où les 4,2 Go manquant ????
soldier8514 Messages postés 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 1
18 juin 2006 à 19:54
ok donc je teste avec une archive iso de 3,8 Go ( image que j'ai fait de mon dernier dvd de nine inch nail dégotté dans les bacs ) _

et vla-Da-DAM !!! çà affiche : -130365440 octets


sans commentaires ...
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
6 sept. 2005 à 19:37
Pas mal ! Mias je trouve que ta fonction n'est pas juste ! C'est vrais en informatique les unité vont de 1024 en 1024 !

Pour toi voila la fonction que j'ai créer qui fiat la même chose que la tienne ! De plus elle gére plus unité (c pour le futur)

Voila ma source :

Function unite(taille As Long) As String

Dim tabunite
Dim i As Integer

tabunite = Array("o", "Ko", "Mo", "Go", "To", "Po", "Eo", "Zo", "Yo")
i = 0

Do While taille >= 1024 And i < 8

taille = taille / 1024
i = i + 1

Loop

unite = Round(taille, 2) & " " & tabunite(i)

End Function

@++

Optitech
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
8 juin 2002 à 08:50
Ouin pas mal
cs_Repie Messages postés 103 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 5 mars 2006
7 févr. 2002 à 18:31
Une précision si tu tests sur la valeur 1000 pour valeur= 1020 ton retour c'est 0,99.. Ko maintenant c'est peut etre ce que tu veux mais bon si tu veux que chaque retour soit tjs (au moins) supérieur à 1 fais le tests sur 1024 au lieu de 1000
@+
Rejoignez-nous