4D v16.3

VOLUME ATTRIBUTES

ホーム

 
4D v16.3
VOLUME ATTRIBUTES

VOLUME ATTRIBUTES 


 

VOLUME ATTRIBUTES ( volume ; size ; used ; free ) 
引数   説明
volume  文字 in ボリュームの名前
size  実数 in ボリュームのサイズ(バイト単位)
used  実数 in 使用サイズ(バイト単位)
free  実数 in 空きサイズ(バイト単位)

説明   

VOLUME ATTRIBUTESコマンドは、引数volumeに渡した名前を持つボリュームのサイズ、使用サイズおよび空きサイズをバイト単位で表わして返します。

Note: volumeがマウントされていないリモートボリュームを示す場合、OK変数に0が代入され、3つの引数は-1を返します。

例題  

このアプリケーションには、夜間や週末に実行し、ディスク上に大規模な中間ファイルを格納するバッチ処理がいくつか含まれています。このプロセスをできる限り自動的かつ柔軟にするには、中間ファイルを格納するために十分な空きサイズを持つ最初のボリュームを自動的に見つけるルーチンを作成します。例えば以下のようなプロジェクトメソッドを作成します。

  ` Find volume for space プロジェクトメソッド
  ` Find volume for space ( 実数 ) -> 文字列
  ` Find volume for space ( 必要なサイズ ) -> ボリューム名または空の文字列
 
 C_STRING(31;$0)
 C_STRING(255;$vsDocName)
 C_LONGINT($vlNbVolumes;$vlVolume)
 C_REAL($1;$vlSize;$vlUsed;$vlFree)
 C_TIME($vhDocRef)
 
  `戻り値を初期化する
 $0:=""
  `エラー阻止メソッドを使用して、すべてのI/O処理を保護する
 ON ERR CALL("ERROR METHOD")
  `ボリュームのリストを取得する
 ARRAY STRING(31;$asVolumes;0)
 gError:=0
 VOLUME LIST($asVolumes)
 If(gError=0)
  `Windowsで実行している場合、(通常の) 2つのフロッピーディスクドライブは省略する
    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)
  `それぞれのボリュームに対して
    For($vlVolume;1;$vlNbVolumes)
  `サイズ、使用サイズ、空きサイズを取得する
       gError:=0
       VOLUME ATTRIBUTES($asVolumes{$vlVolume};$vlSize;$vlUsed;$vlFree)
       If(gError=0)
  `空きサイズは十分にありますか(必要なサイズに32KBを加えたサイズ) ?
          If($vlFree>=($1+32768))
  `もし十分であれば、ボリュームがアンロックされているかどうかをチェック...
             $vsDocName:=$asVolumes{$vlVolume}+Char(Directory symbol)+"XYZ"+String(Random)+".TXT"
             $vhDocRef:=Create document($vsDocName)
             If(OK=1)
                CLOSE DOCUMENT($vhDocRef)
                DELETE DOCUMENT($vsDocName)
  `すべて問題がなければ、ボリュームの名前を返す
                $0:=$asVolumes{$vlVolume}
                $vlVolume:=$vlNbVolumes+1
             End if
          End if
       End if
    End for
 End if
 ON ERR CALL("")

このプロジェクトメソッドがアプリケーションに追加されると、例えば、以下のように記述することができます。

 $vsVolume:=Find volume for space(100*1024*1024)
 If($vsVolume#"")
  ` Continue
 Else
    ALERT("A volume with at least 100 MB of free space is required!")
 End if



参照 

VOLUME LIST

 
プロパティ 

プロダクト: 4D
テーマ: システムドキュメント
番号: 472

このコマンドはOKシステム変数を更新しますErrorシステム変数が更新されることがあります。This command can be run in preemptive processes

 
履歴 

初出: 4D v6

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)