4D v15.4

VOLUME ATTRIBUTES

Página Inicial

 
4D v15.4
VOLUME ATTRIBUTES

VOLUME ATTRIBUTES 


 

VOLUME ATTRIBUTES ( volume ; tamanho ; usado ; livre ) 
Parâmetro Tipo   Descrição
volume  String in Nome volume
tamanho  Real in Tamanho do volume expresso em bytes
usado  Real in Espaço usado expresso em bytes
livre  Real in Espaço livre expresso em bytes

O comando VOLUME ATTRIBUTES retorna em bytes o tamanho, o espaço utilizado e o espaço livre do volume cujo nome se passa em volume.

Nota: se volume indica um volume remoto não montado, a variável OK toma o valor 0 e os três parâmetros retornam -1.

Exemplo  

Sua aplicação inclui algumas operações por lotes que são executadas na noite ou os fins de semana para armazenar arquivos temporários grandes em disco. Para que este processo seja tão automático e flexível quanto seja possível, você escreve uma rotina que pesquisará automaticamente o primeiro volume cujo espaço livre seja suficiente para seus arquivos temporários. Você pode escrever o seguinte método de projeto:

  //Mètodo de Projeto Encontrar espaço para volume
 <p> //Encontrar volume para espaço ( Real ) -> String
  //Encontrar volume para espaço ( Espaço necessário em bytes ) -> Nome de volume ou string vazia
 
 C_TEXT($0)
 C_TEXT($vsDocName)
 C_LONGINT($vlNbVolumes;$vlVolume)
 C_REAL($1;$vlSize;$vlUsed;$vlFree)
 C_TIME($vhDocRef)
 
  //Initializar resultado da função
 $0:=""
  //Proteger todas as operações  I/O com um método de interrupção de erros
 ON ERR CALL("ERROR METHOD")
  //Consegue a lista dos volumes
 ARRAY TEXT($asVolumes;0)
 gError:=0
 VOLUME LIST($asVolumes)
 If(gError=0)
  //Se executar em windows, ignora os dois leitores de disquete
    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 volume
    For($vlVolume;1;$vlNbVolumes)
  //Consegue o tamanho, espaço usado e espaço livre
       gError:=0
       VOLUME ATTRIBUTES($asVolumes{$vlVolume};$vlSize;$vlUsed;$vlFree)
       If(gError=0)
  //o espaço livre é grande o suficiente (mais um extra de 32K)?
          If($vlFree>=($1+32768))
  //Se sim, verificar se o volume não 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)
  //Se tudo estiver bem, retornar o nome do volume
                $0:=$asVolumes{$vlVolume}
                $vlVolume:=$vlNbVolumes+1
             End if
          End if
       End if
    End for
 End if
 ON ERR CALL("")

Quando tiver sido adicionado este método de projeto a sua aplicação, pode escrever:

[#code4D]$vsVolume:=Find volume for space (100*1024*1024)
If($vsVolume#"")
//Continua
Else
ALERT("É necessário um espaço livre de pelo menos 100 MB!")
End if[#/code4]




Ver também 

VOLUME LIST

 
PROPRIEDADES 

Produto: 4D
Tema: Documentos de Sistema
Número 472

Este comando modifica a variável sistema OKEste comando modifica a variável sistema Error

 
HISTÓRIA 

Criado por: 4D v6

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v15.4)
Manual de linguagem 4D ( 4D v15.3)