Estoy haciendo un programa para A2 Computing que exporta una gran cantidad de datos. Mi asignación de HDD en la red local es de aproximadamente 50 MB, por lo que es un buen candidato para probar el error "sin espacio en el disco".Espacio libre en disco en una unidad de red en Delphi
Actualmente, cuando el programa se queda sin espacio, se bloquea la exportación media con I/O Error 112. Me gustaría advertir con anticipación si el archivo puede exceder el espacio disponible. Sé lo grande que será el archivo (24.8 bytes por registro, en promedio), así que todo lo que necesito hacer es averiguar cuánto espacio hay libre.
Como estoy trabajando en una unidad de red, con una ruta de archivo como \\qmcsan1\Cxxxxx$\filename.csv
, ¿cómo utilizo funciones como DiskFree
para calcular el espacio disponible? Cualquier función de este tipo también necesita manejar unidades locales como C:/
.
Cualquier idea muy apreciada.
Ver RRUZ en este SO hilo [cómo-a-conseguir-disco-total-de-espacio-ventanas de unidad] (http://stackoverflow.com/questions/6383598/delphi-how-to -get-total-disk-space-of-windows-drive). Utiliza WMI y funciona en computadoras remotas. –
@LU RD, el abuso de WMI es un enfoque realmente horrible. Preveo el caso cuando el usuario autorizado para usar el recurso compartido falla la verificación de privilegios de WMI. – OnTheFly
@LU RD Si el usuario puede escribir en el volumen, es de suponer que solo pueden usar Win32 API para obtener espacio libre en lugar de necesitar WMI de gran peso. –