4D v16.3

VOLUME ATTRIBUTES

Página Inicial

 
4D v16.3
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 Buscar volume para espaço
  ` Buscar volume para espaço ( Real ) -> Alfa
  ` Buscar volume para espaço ( Espaço necessário em bytes ) -> Nome do volume ou string vazia
 
 C_STRING(31;$0)
 C_STRING(255;$vsDocNome)
 C_LONGINT($vlNbVolumens;$vlVolumens)
 C_REAL($1;$vlTamanho;$vlUtilizado;$vlLivre)
 C_TIME($vhDocRef)
 
  ` Inicializar o resultado da função
 $0:=""
  ` Proteger todas as operações de entrada/saida com um método de interrupção de erros
 ON ERR CALL("ERROR METHOD")
  ` Obter a lista dos volumens
 ARRAY STRING(31;$asVolumens;0)
 gError:=0
 VOLUME LIST($asVolumens)
 If(gError=0)
  ` Se rodar em Windows, ignorar os dois leitores de diskettes
    If(On Windows)
       $vlVolume:=Find in array($asVolumens;"A:\\")
       If($vlVolume>0)
          DELETE FROM ARRAY($asVolumene;$vlVolume)
       End if
       $vlVolume:=Find in array($asVolumene;"B:\\")
       If($vlVolume>0)
          DELETE FORM ARRAY($asVolumene;$vlVolume)
       End if
    End if
    $vlNbVolumes:=Size of array($asVolumes)
  ` Para cada volume
    For($vlVolume;1;$vlNbVolumes)
  ` Obter o tamanho, o espaço utilizado e o espaço livre
       gError:=0
       VOLUME ATTRIBUTES($asVolumes{$vlVolume};$vlTamanho;$vlUtilizado;$vlLivre)
       If(gError=0)
  ` O espaço livre é suficiente (mais de 32K extra) ?
          If($vlLivre>=($1+32768))
  ` Se for assim, verificar se o volume não está bloqueado..
             $vsDocNome:=$asVolumes{$vlVolume}+Char(Directory symbol)+"XYZ"+String(Random)+".TXT"
             $vhDocRef:=Create document($vsDocNome)
             If(OK=1)
                CLOSE DOCUMENT($vhDocRef)
                DELETE DOCUMENT($vsDocNome)
  ` Se tudo estiver bem, devolver 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:

 $vsVolume:=Buscar volume para espaço(100*1024*1024)
 If($vsVolume#"")
  ` Continuar
 Else
    ALERT("É necessário um volume com pelo menos 100 MB de espaço livre!")
 End if



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 ErrorThis command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D v6

 
ARTICLE USAGE

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