API :CONVERTIR DES OCTETS EN KO,MO,GO EN FONCTION DE LA VALEUR
SkyRocKo
Messages postés174Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention18 février 2006
-
18 févr. 2006 à 16:45
thel0rd
Messages postés14Date d'inscriptionlundi 16 février 2004StatutMembreDernière intervention20 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.
thel0rd
Messages postés14Date d'inscriptionlundi 16 février 2004StatutMembreDernière intervention20 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és88Date d'inscriptionvendredi 26 avril 2002StatutMembreDernière intervention24 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és2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 20 févr. 2006 à 17:20
lol non c'est toujours pas ce que je voulais dire ^^ tant pis lol
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 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és2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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és6Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention20 février 2006 20 févr. 2006 à 11:56
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 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és586Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention13 février 20082 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és214Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention12 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és1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és174Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention18 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és174Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention18 février 2006 18 févr. 2006 à 16:45
6 avril 2006 à 15:22
24 févr. 2006 à 01:26
Mais tout cela était bien expliqué dans la page donnée par Maksime.
20 févr. 2006 à 17:20
20 févr. 2006 à 14:51
20 févr. 2006 à 12:56
Ps : le lien que tu m'a passé n'a pas l'air de marcher
20 févr. 2006 à 11:56
http://fr.wikipedia.org/wiki/Octet
20 févr. 2006 à 01:34
Je voulais savoir, 1024 ça a été décidé arbitrairement par windows ??
19 févr. 2006 à 15:06
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.
19 févr. 2006 à 14:04
19 févr. 2006 à 09:08
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
19 févr. 2006 à 09:07
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
18 févr. 2006 à 22:51
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
18 févr. 2006 à 16:45
Génial cet API ! Merci
10/10