4D v15.4VOLUME ATTRIBUTES |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v15.4
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 proyecto Find volume for space
//Find volume for space ( Real ) -> Alfa
//Find volume for space ( Espacio necesario en bytes ) -> Nombre del volumen o cadena vacía
C_TEXT($0)
C_TEXT($vsDocName)
C_LONGINT($vlNbVolumes;$vlVolume)
C_REAL($1;$vlSize;$vlUsed;$vlFree)
C_TIME($vhDocRef)</p><p> //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 TEXT($asVolumes;0)
gError:=0
VOLUME LIST($asVolumes)
If(gError=0)
//Si se corre en Windows, ignorar los dos lectores de diskettes
If(On Windows)
$vlVolume:=Find in array($asVolumes;"A:\\")
If($vlVolume>0)
DELETE FROM ARRAY($asVolumes;$vlVolume)
End if
$vlVolume:=Find in array($asVolumes;"B:\\")
If($vlVolume>0)
DELETE FROM ARRAY($asVolumes;$vlVolume)
End if
End if
$vlNbVolumes:=Size of array($asVolumes)
//Para cada volumen
For($vlVolume;1;$vlNbVolumes)
//Obtener el tamaño, el espacio utilizado y el espacio libre
gError:=0
VOLUME ATTRIBUTES($asVolumes{$vlVolume};$vlSize;$vlUsed;$vlFree)
If(gError=0)
//¿El espacio libre es suficiente (más de 32K extra)?
If($vlFree>=($1+32768))
//Si es así, verificar si el volumen no está bloqueado..
$vsDocName:=$asVolumes{$vlVolume}+Char(Directory symbol)+"XYZ"+String(Random)+".TXT"
$vhDocRef:=Create document($vsDocName)
If(OK=1)
CLOSE DOCUMENT($vhDocRef)
DELETE DOCUMENT($vsDocName)
//Si todo está bien, devolver el nombre del volumen
$0:=$asVolumes{$vlVolume}
$vlVolume:=$vlNbVolumes+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:
$vsVolume:=Find volume for space(100*1024*1024)
If($vsVolume#"")
//Continue
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 v15.4)
Manual de lenguaje 4D ( 4D v15.3)