VOLUME ATTRIBUTES

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 6.0


VOLUME ATTRIBUTES (volumen; tamaño; utilizado; libre)

ParámetroTipoDescripción
volumenAlfaNombre del volumen
tamañoNuméricoTamaño del volumen expresado en bytes
utilizadoNuméricoEspacio utilizado expresado en bytes
libreNuméricoEspacio 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

VOLUME LIST.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente