VOLUME ATTRIBUTES

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 6.0


VOLUME ATTRIBUTES (Volume; Größe; belegt; frei)

ParameterTypBeschreibung
VolumeStringVolume-Name
GrößeNumerischVolume-Größe in Bytes
belegtNumerischBelegter Platz in Bytes
freiNumerischFreier Platz in Bytes

Beschreibung

Der Befehl VOLUME ATTRIBUTES gibt die Größe, den belegten sowie den freien Platz in Bytes für das Volume zurück, dessen Name Sie in Volume übergeben.

Hinweis: Gibt Volume ein nicht-gemountetes Remote Volume an, wird die Variable OK auf 0 (Null) gesetzt, die drei Parameter geben dann -1 zurück.

Beispiel

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 ELEMENT($asVolumes;$vlVolume)
         End if 
         $vlVolume:=Find in array($asVolumes;"B:")
         If ($vlVolume>0)
            DELETE ELEMENT($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

Referenz

VOLUME LIST.


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next