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ún comentario todavía


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