4D v15.4VOLUME ATTRIBUTES |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v15.4
VOLUME ATTRIBUTES
|
VOLUME ATTRIBUTES ( volume ; tamanho ; usado ; livre ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
volume | String |
![]() |
Nome volume | |||||
tamanho | Real |
![]() |
Tamanho do volume expresso em bytes | |||||
usado | Real |
![]() |
Espaço usado expresso em bytes | |||||
livre | Real |
![]() |
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.
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)
Produto: 4D
Tema: Documentos de Sistema
Número
472
Criado por: 4D v6
Manual de linguagem 4D ( 4D v15.4)
Manual de linguagem 4D ( 4D v15.3)