versión 6.0
VOLUME ATTRIBUTES (volumen; tamaño; utilizado; libre)
| Parámetro | Tipo | Descripción | |
| volumen | Alfa | Nombre del volumen | |
| tamaño | Numérico | Tamaño del volumen expresado en bytes | |
| utilizado | Numérico | Espacio utilizado expresado en bytes | |
| libre | Numérico | Espacio libre expresado en bytes |
Descripción
El comando VOLUME ATTRIBUTES devuelve en bytes el tamaño, el espacio utilizado y el espacio libre del volumen cuyo nombre se pasa en volumen.
Nota: Si volumen indica un volumen remoto no montado, la variable OK toma el valor 0 y los tres parámetros devuelven -1.
Ejemplo
Su aplicación incluye algunas operaciones por lotes que se ejecutan en la noche o los fines de semana para almacenar archivos temporales grandes en disco. Para que este proceso sea tan automático y flexible como sea posible, usted escribe una rutina que buscará automáticamente el primer volumen cuyo espacio libre sea suficiente para sus archivos temporales. He aquí el método:
` Método de proyecto Buscar volumen para espacio
` Buscar volumen para espacio ( Real ) -> Alfa
` Buscar volumen para espacio ( Espacio necesario en bytes ) -> Nombre del volumen o cadena vacía
C_STRING(31;$0)
C_STRING(255;$vsDocNombre)
C_LONGINT($vlNbVolumenes;$vlVolumenes)
C_REAL($1;$vlTamaño;$vlUtilizado;$vlLibre)
C_TIME($vhDocRef)
` Inicializar el resultado de la función
$0:=""
` Proteger todas las operaciones de entrada/salida con un método de interrupción de errores
ON ERR CALL("ERROR METHOD")
` Obtener la lista de los volúmenes
ARRAY STRING(31;$asVolumenes;0)
gError:=0
VOLUME LIST($asVolumenes)
If (gError=0)
` Si se corre en Windows, ignorar los dos lectores de diskettes
If (On Windows )
$vlVolumen:=Find in array($asVolumenes;"A:\\")
If ($vlVolumen>0)
DELETE FROM ARRAY($asVolumenes;$vlVolumen)
End if
$vlVolumen:=Find in array($asVolumenes;"B:\\")
If ($vlVolumen>0)
DELETE FORM ARRAY($asVolumenes;$vlVolumen)
End if
End if
$vlNbVolumenes:=Size of array($asVolumenes)
` Para cada volumen
For ($vlVolumen;1;$vlNbVolumenes)
` Obtener el tamaño, el espacio utilizado y el espacio libre
gError:=0
VOLUME ATTRIBUTES($asVolumenes{$vlVolumen};$vlTamaño;$vlUtilizado;$vlLibre)
If (gError=0)
` ¿El espacio libre es suficiente (más de 32K extra) ?
If ($vlLibre>=($1+32768))
` Si es así, verificar si el volumen no está bloqueado..
$vsDocNombre:=$asVolumenes{$vlVolumen}+Char(Directory symbol )+"XYZ"+String(Random)+".TXT"
$vhDocRef:=Create document($vsDocNombre)
If (OK=1)
CLOSE DOCUMENT($vhDocRef)
DELETE DOCUMENT($vsDocNombre)
` Si todo está bien, devolver el nombre del volumen
$0:=$asVolumenes{$vlVolumen}
$vlVolumen:=$vlNbVolumenes+1
End if
End if
End if
End for
End if
ON ERR CALL("")
Una vez se añade este método de proyecto a su aplicación, puede escribir:
$vsVolumen:=Buscar volumen para espacio (100*1024*1024)
If($vsVolumen#"")
` Continuar
Else
ALERT("¡Es necesario un volumen con por lo menos 100 MB de espacio libre!")
End if
Ver también