Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
VOLUME ATTRIBUTES
|
VOLUME ATTRIBUTES ( volumen ; tamaño ; utilizado ; libre ) | ||||||||
Parámetro | Tipo | Descripción | ||||||
volumen | Cadena |
![]() |
Nombre del volumen | |||||
tamaño | Real |
![]() |
Tamaño del volumen expresado en bytes | |||||
utilizado | Real |
![]() |
Espacio utilizado expresado en bytes | |||||
libre | Real |
![]() |
Espacio libre expresado en bytes | |||||
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.
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
Producto: 4D
Tema: Documentos del sistema
Número
472
Creado por: 4D v6
Manual de lenguaje 4D ( 4D v20 R7)