API :CONVERTIR DES OCTETS EN KO,MO,GO EN FONCTION DE LA VALEUR

SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006 - 18 févr. 2006 à 16:45
thel0rd Messages postés 14 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 20 janvier 2012 - 6 avril 2006 à 15:22
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/36125-api-convertir-des-octets-en-ko-mo-go-en-fonction-de-la-valeur

thel0rd Messages postés 14 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 20 janvier 2012
6 avril 2006 à 15:22
cool je connaissais pas du tout cette API, thx j'en ai besoin en plus. merci encore a toi
cs_FAS Messages postés 88 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 24 février 2006
24 févr. 2006 à 01:26
MadM@tt >> C'est 1024, parce que ça s'approche du 1000 du système de notation scientifique standard : théoriquement, on devrait pas dire un kilo-octet pour 1024 octet mais un "kibi-octet". Un kilo-octet valant 1000 octets. Dans la pratique, à part pour les fabricants de disque dur qui peuvent comme ça indiquer des valeurs qui semblent supérieures à ce qu'elles sont en vrai, personne n'utilise la notation "kibi", et tout le monde dit "kilo" pour 1024, même si c'est un peu différent.

Mais tout cela était bien expliqué dans la page donnée par Maksime.
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
20 févr. 2006 à 17:20
lol non c'est toujours pas ce que je voulais dire ^^ tant pis lol
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
20 févr. 2006 à 14:51
Windows est un OS et a ce titre il ne décide rien! Mais si ta question est de savoir si Crosoft est pour quelque chose dans le fait qu'on passe des unités à leurs kilos puis leur méga ... je dirais non, évidemment!!! Tu sais, en base dix aussi on peut parler en Kilos ... D'ailleurs, certains commerçants parlent en KE (KiloEuros... anciennement KF). La particularité du 024 est juste du au binaire. Je sais pas ce que ça donnerait en trinaire mais ce ne serait pas non plus "juste" (000) !
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
20 févr. 2006 à 12:56
Maksime > Oui désolé j'ai pas été clair, je sais que c'est 2^10, ce que je voulais savoir c'est pourquoi après tout, ça aurait pu marcher avec 2^7 ou autre, ou meme 436, mais je voulais savoir si c'était windows qui avait décidé ça ?
Ps : le lien que tu m'a passé n'a pas l'air de marcher
cs_Maksime Messages postés 6 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 20 février 2006
20 févr. 2006 à 11:56
--> MadM@tt : c'est lié au fait que tout est en binaire en informatique. Tout est là
http://fr.wikipedia.org/wiki/Octet
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
20 févr. 2006 à 01:34
Salut, c'est cool ce code je connaissais pas cette api.
Je voulais savoir, 1024 ça a été décidé arbitrairement par windows ??
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
19 févr. 2006 à 15:06
Salut;
GetFileSize dans le cas d'un fichier local, sinon la fonction sujet peut etre utiliser dans des cas tels le telechargement de fichiers distants.
Merci pour vos codes, c'est tres instructif.
BZY1 Messages postés 214 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 12 avril 2008
19 févr. 2006 à 14:04
Dans le meme genre tu as GetFileSize (va voir sur allapi.net si tu connais pas, il y a un bon exemple) a+
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 févr. 2006 à 09:08
et la fonction qui va avec :

Public Function sFormaterNumerique$(ByVal rVal!)

' Formater un numérique avec une précision d'une décimale

' Le format numérique standard est correct (séparation des milliers et plus),
' il suffit juste d'enlever la décimale inutile si 0

Dim nfi As Globalization.NumberFormatInfo = _
New Globalization.NumberFormatInfo
' Définition des spérateurs numériques
nfi.NumberGroupSeparator = " " ' Séparateur des milliers, millions...
nfi.NumberDecimalSeparator = "." ' Séparateur décimal
' 3 groupes pour milliard, million et millier
' (on pourrait en ajouter un 4ème pour les To : 1000 Go)
nfi.NumberGroupSizes = New Integer() {3, 3, 3}
nfi.NumberDecimalDigits = 1 ' 1 décimale de précision
sFormaterNumerique = rVal.ToString("n", nfi) ' n : numérique général
' Enlever la décimale si 0
sFormaterNumerique = sFormaterNumerique.Replace(".0", "")

End Function
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
19 févr. 2006 à 09:07
Ben voici ma fonction à moi alors :

Public Function sFormaterTailleOctets$(ByVal lTailleOctets&)

' Renvoyer une taille de fichier bien formatée dans une chaîne de caractère

' 1024 est la norme actuellement employée dans Windows,
' mais 1000 sera peut être un jour la norme
Dim sAffichage$ = sFormaterNumerique(lTailleOctets) & " octets"
Dim rNbKo! = CSng(Math.Round(lTailleOctets / 1024, 1))
If rNbKo > 0 Then sAffichage &= " (" & sFormaterNumerique(rNbKo) & " Ko"
Dim rNbMo! = CSng(Math.Round(lTailleOctets / (1024 * 1024), 1))
If rNbMo > 0 Then sAffichage &" " & sFormaterNumerique(rNbMo) & " Mo"
Dim rNbGo! = CSng(Math.Round(lTailleOctets / (1024 * 1024 * 1024), 1))
If rNbGo > 0 Then sAffichage &" " & sFormaterNumerique(rNbGo) & " Go"
If rNbKo > 0 Or rNbMo > 0 Or rNbGo > 0 Then sAffichage &= ")"
sFormaterTailleOctets = sAffichage

End Function
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
18 févr. 2006 à 22:51
J'ai essayé de reproduire cette fonction et voici le même code sans API à la diffèrence près que les valeurs sont arrondies à n décimales près, et non pas tronquées comme avec l'API.

Voici le code:

Public Function StrFormatByteSize(ByVal dw As Long, Optional NumDigitsAfterDecimal As Long = 2) As String
Dim sValue As String
Select Case (dw \ 1024)
Case Is >= 1024000
sValue = CStr(Round(dw / (1024 ^ 3), NumDigitsAfterDecimal)) & " Go"
Case Is >= 1000
sValue = CStr(Round(dw / (1024 ^ 2), NumDigitsAfterDecimal)) & " Mo"
Case Is >= 1
sValue = CStr(Round(dw / 1024, NumDigitsAfterDecimal)) & " Ko"
Case Is = 0
sValue = CStr(Round(dw)) & " octets"
End Select
Let StrFormatByteSize = sValue
End Function
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
18 févr. 2006 à 16:45
Salut MasterHack,

Génial cet API ! Merci

10/10