4D v15.4VOLUME ATTRIBUTES |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v15.4
VOLUME ATTRIBUTES
|
VOLUME ATTRIBUTES ( Volume ; Größe ; belegt ; frei ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Volume | String |
![]() |
Volume-Name | |||||
Größe | Zahl |
![]() |
Volume-Größe in Bytes | |||||
belegt | Zahl |
![]() |
Belegter Platz in Bytes | |||||
frei | Zahl |
![]() |
Freier Platz in Bytes | |||||
Der Befehl VOLUME ATTRIBUTES gibt die Größe, den belegten sowie den freien Platz in Bytes für das Volume mit dem in Volume übergebenen Namen zurück.
Hinweis: Gibt Volume ein nicht-hochgefahrenes Remote Volume an, wird die Variable OK auf 0 (Null) gesetzt, die drei Parameter geben dann -1 zurück.
Ihre Anwendung enthält einige Stapeloperationen, die über Nacht oder am Wochenende laufen, da sie umfangreiche temporäre Dateien auf der Festplatte speichern. Damit dieser Vorgang möglichst flexibel und automatisch läuft, schreiben Sie eine Methode, die automatisch das erste Volume mit genügend freiem Speicherplatz für Ihre temporären Dateien findet:
//Projektmethode Find volume for space
//Find volume for space ( Real ) -> String
//Find volume for space ( Benötigter Platz in Bytes ) -> Volume Name oder Leerer String
C_TEXT($0)
C_TEXT($vsDocName)
C_LONGINT($vlNbVolumes;$vlVolume)
C_REAL($1;$vlSize;$vlUsed;$vlFree)
C_TIME($vhDocRef)
//Funktionsereignis initialisieren
$0:=""
//Alle E/A Operationen mit einer Fehlerunterbrechungsmethode schützen
ON ERR CALL("ERROR METHOD")
//Liste der Volumes erhalten
ARRAY TEXT($asVolumes;0)
gError:=0
VOLUME LIST($asVolumes)
If(gError=0)
//Unter Windows die beiden gängigen Floppy Treiber überspringen
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)
//Für jedes Volume
For($vlVolume;1;$vlNbVolumes)
//Größe, belegten und freien Platz erhalten
gError:=0
VOLUME ATTRIBUTES($asVolumes{$vlVolume};$vlSize;$vlUsed;$vlFree)
If(gError=0)
//Reicht der freie Platz aus (plus 32K extra)?
If($vlFree>=($1+32768))
//Wenn ja, prüfe, ob das Volume entsperrt ist
$vsDocName:=$asVolumes{$vlVolume}+Char(Directory symbol)+"XYZ"+String(Random)+".TXT"
$vhDocRef:=Create document($vsDocName)
If(OK=1)
CLOSE DOCUMENT($vhDocRef)
DELETE DOCUMENT($vsDocName)
//Ist alles OK, Name des Volume zurückgeben
$0:=$asVolumes{$vlVolume}
$vlVolume:=$vlNbVolumes+1
End if
End if
End if
End for
End if
ON ERR CALL("")
Haben Sie diese Projektmethode in Ihre Anwendung eingefügt, können Sie z.B. schreiben:
$vsVolume:=Find volume for space(100*1024*1024)
If($vsVolume#"")
//Fortfahren
Else
ALERT("Ein Volume mit mindestens 100 MB freiem Speicherplatz wird benötigt!")
End if
Produkt: 4D
Thema: Systemdokumente
Nummer:
472
Erstellt: 4D v6
4D Programmiersprache ( 4D v15.4)
4D Programmiersprache ( 4D v15.3)