Pas mal pour une premiere contribution ^^.
mais, je viens de remarque un problème sur les informations des "disques durs". Déjà il ne détecte pas un disque. Après les 2 derniers disque détecter sont en fait un lecteur CD/DVD et lecteur de carte SD, qui on les valeurs du dernier disque réel.
Voir image (en rouge les disque "faux" (h et k)) :
Cordialement,
GallyHC
Ré-edition :
Ok je viens de comprendre le problème. Ton appli ne peu fonctionner que pour toi en fait, car les lecteurs sont en dur dans le code, du style :
Code : Tout sélectionner
drive$ = "E:\"
GetDiskFreeSpaceEx_(@drive$,BytesFreeToCaller.int64,TotalBytes.int64,TotalFreeBytes.int64)
; calcul de la taille en Mb
TotalMB = ((TotalBytes\Long1 >> 20) & $FFF) | (TotalBytes\Long2 << 12)
FreeMB = ((TotalFreeBytes\Long1 >> 20) & $FFF) | (TotalFreeBytes\Long2 << 12)
TotalMB=Int(TotalMB/1000)
FreeMB=Int(FreeMB/1000)
Code : Tout sélectionner
Procedure.s ConvertSize(filesize.d, decimal.l = 1)
; ROUTINE DE CONVERSION DE LA TAILLE FICHIER.
Protected i.l = 1
Protected j.s = "o,Ko,Mo,Go,To"
Protected k.l = CountString(j, ",")
While filesize >= 1024 And i <= k
filesize / 1024
i + 1
Wend
Protected sres.s = StrF(filesize, decimal)
Protected sent.s = StringField(sres, 1, ".")
Protected sdec.s = StringField(sres, 2, ".")
If i = 1
ProcedureReturn sent + " o"
Else
If Val(sdec) = 0
ProcedureReturn sent + " " + StringField(j, i, ",")
Else
ProcedureReturn sres + " " + StringField(j, i, ",")
EndIf
EndIf
EndProcedure
; EXEMPLE :
Debug ConvertSize(100000)