| 4D v18PROPRIETES DU VOLUME | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v18
 PROPRIETES DU VOLUME 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PROPRIETES DU VOLUME ( volume ; taille ; utilisé ; libre ) | ||||||||
| Paramètre | Type | Description | ||||||
| volume | Chaîne |   | Nom du volume | |||||
| taille | Réel |   | Taille du volume exprimée en octets | |||||
| utilisé | Réel |   | Place utilisée sur le volume exprimée en octets | |||||
| libre | Réel |   | Place libre sur le volume exprimée en octets | |||||
La commande PROPRIETES DU VOLUME retourne la taille, la place utilisée et la place libre sur le volume dont le nom est passé dans volume. Ces valeurs sont exprimées en octets.
Note : Si volume indique un volume distant non monté, la variable OK prend la valeur 0 et les trois paramètres retournent -1.
Votre application comprend des opérations par lots qui sont exécutées la nuit ou pendant le week-end. Ces opérations stockent des fichiers temporaires sur disque. Pour que cette méthode soit aussi autonome et souple que possible, vous écrivez une routine qui va automatiquement chercher et utiliser le premier volume ayant de la place disponible pour les fichiers temporaires. Voici la méthode :
  ` Méthode projet Chercher volume pour place
  ` Chercher volume pour place ( Reel ) -> Alpha
  ` Chercher volume pour place ( Place nécessaire en octets ) -> Nom du volume ou chaîne vide
 
 C_ALPHA(31;$0)
 C_ALPHA(255;$vaNomDoc)
 C_ENTIER LONG($vlNbVolumes;$vlVolume)
 C_REEL($1;$vlTaille;$vlUtilisé;$vlLibre)
 C_HEURE($vhDocRef)
 
  ` Initialiser le résultat de la fonction
 $0:=""
  ` Protéger toutes les opérations d'entrée/sortie par une méthode d'interruption d'erreur
 APPELER SUR ERREUR("METHODE ERREUR")
  ` Obtenir la liste des volumes
 TABLEAU ALPHA(31;$taVolumes;0)
 gErreur:=0
 LISTE DES VOLUMES($taVolumes)
 Si(gErreur=0)
  ` Si nous sommes sous Windows, ignorer les deux lecteurs de disquettes
    Si(Sous Windows)
       $vlVolume:=Chercher dans tableau($taVolumes;"A:\\")
       Si($vlVolume>0)
          SUPPRIMER DANS TABLEAU($taVolumes;$vlVolume)
       Fin de si
       $vlVolume:=Chercher dans tableau($taVolumes;"B:\\")
       Si($vlVolume>0)
          SUPPRIMER DANS TABLEAU($taVolumes;$vlVolume)
       Fin de si
    Fin de si
    $vlNbVolumes:=Taille tableau($taVolumes)
  ` Pour chaque volume
    Boucle($vlVolume;1;$vlNbVolumes)
  ` Obtenir la taille, la place utilisée et la place libre
       gErreur:=0
       PROPRIETES DU VOLUME($taVolumes{$vlVolume};$vlTaille;$vlUtilisé;$vlLibre)
       Si(gErreur=0)
  ` Est-ce que la place libre est suffisante (plus 32K) ?
          Si($vlLibre>=($1+32768))
  ` Si oui, vérifier que le volume n'est pas verrouillé...
             $vaNomDoc:=$taVolumes{$vlVolume}+Caractere(Symbole séparateur)+"XYZ"+Chaine(Hasard)+".TXT"
             $vhDocRef:=Creer document($vaNomDoc)
             Si(OK=1)
                FERMER DOCUMENT($vhDocRef)
                SUPPRIMER DOCUMENT($vaNomDoc)
  ` Si tout est ok, retourner le nom du volume
                $0:=$taVolumes{$vlVolume}
                $vlVolume:=$vlNbVolumes+1
             Fin de si
          Fin de si
       Fin de si
    Fin de boucle
 Fin de si
 APPELER SUR ERREUR("")cette méthode projet est ajoutée à votre application, vous pouvez écrire :
 $vaVolume:=Chercher volume pour place(100*1024*1024)
 Si($vaVolume#"")
  ` Continuer
 Sinon
    ALERTE("Un volume avec au moins 100 Mo d'espace libre est nécessaire !")
 Fin de si
	Produit :  4D
	Thème :  Documents système
	Numéro :  
        472
        
        
        
	Nom intl. :  VOLUME ATTRIBUTES
	Créé :  4D v6
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	4D - Langage ( 4D v18)
	
	
	
	
	
 Ajouter un commentaire
Ajouter un commentaire