ElTicus.com

Programación, lenguajes y recursos para programadores

Recurso no clasificado
Funci贸n para averiguar el espacio libre de una unidad de disco en Megabytes
Funciona con unidades grandes
Publicado por JL Fecha: 2007-04-21 13:12:41 Idioma: Espa帽ol Tipo de documento: C贸digo fuente

Funci贸n para averiguar el espacio libre de una unidad de disco en Megabytes

Para Visual Basic 6 (VB6)

Es muy 煤til tener una rutina que te devuelva los Megabytes que te quedan libres en una Unidad X de tu disco duro. Puede ser una partici贸n, solamente tienes que mandarle como par谩metro la direcci贸n del directorio raiz, por ejemplo: "c:\" o "d:\".

La rutina funciona con unidades muy grandes (gigas o Terabytes) a煤n cuando la teor铆a dice que no es muy 贸ptimo tener particiones demasiado enormes, aun asi funciona.

La funci贸n se debe poner en una m贸dulo (.BAS) y as铆 la puedes utilizar en cualquier lado de tu proyecto (.VBP)


Option Explicit

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" _
(ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long


Public Function EspacioLibre_MB(ByVal lpRootPathName As String) As Long
 Dim Ret As Long
 Dim lpSectorsPerCluster As Long, lpBytesPerSector As Long
 Dim lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long
 Dim MBytes As Double
 Ret = GetDiskFreeSpace(lpRootPathName, lpSectorsPerCluster, _
 lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters)
 MBytes = lpNumberOfFreeClusters / 1048576
 MBytes = MBytes * lpBytesPerSector * lpSectorsPerCluster
 EspacioLibre_MB = MBytes
End Function


Para utilizarla simplemente utilizas la funci贸n EspacioLibre_MB y te devuelve un valor.
Ten en cuanta que el valor devuelto puede rebasar el tama帽o de una variable de tipo Integer
por lo que es recomendable recibirla en un Long.


NOTA: Si analizas la funci贸n te dar谩s cuenta que la misma se puede utilizar para devolver otros valores como el tama帽o total de la unidad as铆 como los Bytes por Sector y los Sectores por Cluster.

Ademas, si no lo quieres en Megas sino en Kilobytes(KB) cambia la linea en donde divide entre 1048574 (1024*1024) para que divida entre 1024 y as铆 tendr铆as KBs o si no lo divides tendr铆as Bytes.





Nadie ha puesto ning鷑 comentario todav韆


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aqu: Imagen anti-spam =




No hay comentarios