4D v16.3

VOLUME ATTRIBUTES

Inicio

 
4D v16.3
VOLUME ATTRIBUTES

VOLUME ATTRIBUTES 


 

VOLUME ATTRIBUTES ( volumen ; tamaño ; utilizado ; libre ) 
Parámetro Tipo   Descripción
volumen  Cadena in Nombre del volumen
tamaño  Real in Tamaño del volumen expresado en bytes
utilizado  Real in Espacio utilizado expresado en bytes
libre  Real in 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.

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 

VOLUME LIST

 
PROPIEDADES 

Producto: 4D
Tema: Documentos del sistema
Número 472

Este comando modifica la variable sistema OKEste comando modifica la variable sistema ErrorThis command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)