4D v16.3

VOLUME ATTRIBUTES

Home

 
4D v16.3
VOLUME ATTRIBUTES

VOLUME ATTRIBUTES 


 

VOLUME ATTRIBUTES ( Volume ; Größe ; belegt ; frei ) 
Parameter Typ   Beschreibung
Volume  String in Volume-Name
Größe  Zahl in Volume-Größe in Bytes
belegt  Zahl in Belegter Platz in Bytes
frei  Zahl in 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 ( Long ) -> String
  ` Find volume for space ( benötigter Platz in Bytes ) -> Volume-Name oder leerer String
 
 C_STRING(31;$0)
 C_STRING(255;$vsDocName)
 C_LONGINT($1;$vlNbVolumes;$vlVolume)
 C_REAL($vlSize;$vlUsed;$vlFree)
 C_TIME($vhDocRef)
 
  ` Initialisiere Funktionsergebnis
 $0:=""
  ` Schütze alle E/A Operationen mit einer Fehlermethode bei Unterbrechung
 ON ERR CALL("ERROR METHOD")
 ] ` Erhalte die Liste der Volumes
 ARRAY STRING(31;$asVolumes;0)
 gError:=0
 VOLUME LIST($asVolumes)
 If(gError=0)
  ` Überspringe unter Windows die beiden gängigen Floppy Treiber
    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)
  ` Erhalte Größe, belegten sowie freien Platz
       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 nicht gesperrt 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 in Ordnung, gib Namen des Volume zurück
                $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 Platz wird benötigt!")
 End if



Siehe auch 

VOLUME LIST

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Systemdokumente
Nummer: 472

Dieser Befehl ändert die Systemvariable OKDieser Befehl ändert die Systemvariable ErrorThis command can be run in preemptive processes

 
GESCHICHTE 

Erstellt: 4D v6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)