Accessibility

Director TechNote

FileXtra 情報

Director 7 に添付されている FileXtra の情報は以下の通りです。
こちらのXTRAでDirectorからのファイルをコピーが可能です。ただし、サードパーティ製のXTRAとなりますので、弊社でのサポートは一切行っておりません。ご注意下さい。

-- "xtra FileXtra
-- FileXtra v2.0.5 of 26-May-97 by Kent Kersten
-- Copyright (c) 1996-97 Little Planet Publishing
-- For updates see http://www.littleplanet.com/kent/kent.html
-- Contact the author at kent@littleplanet.com
-- This no-charge Xtra may be freely distributed as long as it is
-- accompanied by its documentation and sample movie.
--
-- Drive Functions --
* DriveExists string driveName
* DrivesToList
* DriveFreeSpace string driveName
* DriveIsCDROM string driveName
--
-- File Functions --
* FileOpenDialog string initialDir, string filtStr, string dlogTitle, Boolean createPrompt, Boolean fileMustExist
* FileSaveAsDialog string initialDir, string filename, string dlogTitle, Boolean overwritePrompt
* FileExists string fileName
* RenameFile string oldName, string newName
* DeleteFile string fileName
* CopyFile string fromFName, string toFName
* GetFileModDate string fileName
--
-- Directory Functions --
* DirectoryExists string dirName
* CreateDirectory string dirName
* DeleteDirectory string dirName
* XDeleteDirectory string dirName
* CopyDirectory string fromDirName, string toDirName
* XCopyDirectory string fromDirName, string toDirName
* DirectoryToList string dirName
"

上記のリストは Director のメッセージウインドウで

    put interface(xtra"filextra")

と打てば、表示されます。


DriveExists - 指定したドライブが存在するかどうかを調べます。
DriveFreeSpace - 指定したドライブの空き容量をバイト数で返します。
DriveIsCDROM - 指定したドライブが CD-ROM ドライブかどうかを調べます。
DrivesToList - システムに存在するドライブをリスト形式で返します。

FileExists - 指定したファイルが存在するかどうか調べます。
RenameFile - ファイル名を変更します。
DeleteFile - ファイルを削除します。
CopyFile - ファイルをコピーします。
GetFileModDate - ファイルの最終更新日を調べます。
FileOpenDialog - ファイルを開くシステムダイアログを表示します。
FileSaveAsDialog - ファイル保存のシステムダイアログを表示します。

DirectoryExists - 指定したディレクトリが存在するかどうか調べます。
CreateDirectory - ディレクトリを作成します。
DeleteDirectory - 指定したディレクトリを削除します。
XDeleteDirectory - 指定したディレクトリ階層以下の全てのファイル・階層を削除します。
CopyDirectory - 指定したディレクトリをコピーします。
XCopyDirectory - 指定したディレクトリ階層以下の全てのファイル・階層をコピーします。
DirectoryToList - 指定したディレクトリ内のファイルをリスト形式で返します。


Windows 版 では FileExists, DeleteFile, CopyFile にワイルドカードを使用することが可能です。


FileXtra 自体のアップデートやバグ情報については

  http://www.littleplanet.com/kent/kent.html

をご覧下さい。

(追加情報)

以下は使用方法の一例としてご参照下さい。

ここではファイルをコピーするムービースクリプト「xCopyFile」を作成します。FileXtraのファイルをコピーするメソッドは、'copyFile'です。スクリプトの処理はつぎのような流れとなります。

コピー元パスとコピー先パスの2つのパラメータが確かに2つあるかをチェックします。(その際、FileXtraにはファイルの存在を確認する'fileExists'というメソッドがありますので、これを利用してコピー元ファイルが存在することを確認します。)
その後、ファイルのコピーを実行して、処理結果のエラーコードを取得し、そのエラーコードを返します。サンプルスクリプトはつぎのようになります。

-- [パスを指定してファイルをコピーする - FileXtraを使用 -]

on xCopyFile sSourceFile, sTargetFile
  if voidP(sTargetFile) then
    result = "2 parameters are needed"
  else
    if fileExists(sSourceFile) = 0 then
      result = copyFile(sSourceFile, sTargetFile)
    else
      result = "The source file does not exist"
    end if
  end if
  return result
end

パラメータが2つに満たない場合(0か1)、2つ目のパラメータsTargetFileは値なし、つまり'void'になります。'void'かどうかは、'voidP'関数で判定ができます。この関数は、パラメータとして渡した変数が、'void'なら'true'(1)が、値が入っていれば'false'(0)が返ります('voidP'関数については『Lingo辞書』またはオンラインヘルプ参照)。その判定により条件分岐させ、'void'なら結果を格納する変数resultに"2 parameters are needed"という文字列を入れます。

パラメータが2つある場合、つぎにコピー元ファイルの存在を'fileExists'メソッドで確認します。このメソッドにバラメータとしてファイルのパスを渡すと、ファイルが存在するかどうかを判定し、結果に応じた値を返します。ファイルが存在すれば、'fileExists'の値として0が返ります(その他のエラーコードについては、FileXtra付属のドキュメントを参照)。その場合には、'copyFile'でコピーを実行し、結果の値をresultに代入します。ファイルが存在しないときは、resultに"The source file does not exist"を入れます。最後にresultの値を'return'で返します。

[メッセージウィンドウのテスト結果]
put xCopyFile(the moviePath & "Test.txt")
-- "2 parameters are needed"

put xCopyFile(the moviePath & "NotExist.txt", the moviePath & "CopyTest.txt")
-- "The source file does not exist"

put xCopyFile(the moviePath & "Test.txt", the moviePath & "CopyTest.txt")
-- 0

エラーなくコピーが実行されると、0が返ります。このように、処理結果に応じて値を返す関数形式のハンドラにすると、スクリプトの汎用性がずっと増します。

 なお、FileXtraの'FileOpenDialog'または'FileSaveAsDialog'で出力した開く・保存のダイアログボックスが、ステージをクリックするとその後ろに表示されてしまいます。Windows環境で発生します。こちらはサードパーティ製のXTRAなので詳細は不明ですが、Directorのステージ・ウィンドウの処理に、FileXtraが対応していないためと考えられます。
残念ながらFileXtraの動作を変更することは困難です。代わりに他のエクストラを使用する方法が考えられます。これはWindows環境で発生する現象ですので、以下では、とくに記述した場合を除いて、Windows環境を前提として解説します(Macintoshではエクストラのメソッドが別であったり、パラメータ設定の異なることがあります)。

1.fileIO Xtraを使う
Directorに標準で付属するfileIO Xtraの'displayOpen'と'displaySave'メソッドを、代わりに使用します。fileIO Xtraの使い方については、エクストラ付属のドキュメントまたはテクニカルノート ID: dr0271「FileIO Xtra の使い方」をご参照ください。ただ、カスタマイズできるダイアログボックスの設定が、FileXtraと比べて少ないのが難点です。

2.Buddy APIを使う
逆に、FileXtraよりもずっとパラメータやその設定の種類の多いのが、Buddy APIです。)唯一の短所はダイアログ表示のメソッドをサポートしているのが、Windows版のみだという点です(このノートを作成している2000年7月現在でMacintosh版の追加エクストラが出されていますが、まだベータ版です)。Buddy APIのメソッドについて、サードパーティ製のXTRAなので、詳しくはエクストラ付属の文書またはWebサイトをご参照ください。(こちらもサードパーティ製のXTRAなのでサポートは行っておりません。)

■Buddy API
http://www.mods.com.au/budapi/default.htm

FileXtraに対応する範囲で、BuddyAPIのメソッド'baGetFilename'について説明します。

・FileXtraのメソッド
FileOpenDialog(initialDir, filterStr, dlogTitle, createPrompt, fileMustExist)
FileSaveAsDialog(initialDir, filename, dlogTitle, overwritePrompt)

・Buddy APIのメソッド
baGetFilename( Operation, StartDir, Filename, Filter, Flags, Instruction, NoFolders, X, Y )

'baGetFilename'メソッドは、ひとつで開く・保存両方のダイアログボックスが表示できます。パラメータOperationとして、開くは"open"、保存は"save"を指定します。FileXtraのパラメータinitialDirに当たるデフォルトディレクトリの指定が、StartDirです。また、filenameは同じくFilenameパラメータ、ダイアログタイトル名のdlogTitleはInstructionパラメータに相当します。ファイルの種類のfilterStrは、パラメータFilterで指定します。設定のし方は、FileXtraとほぼ同じですが、項目を"/"ではなく"|"で区切ります。

FileXtraの両メソッドで指定できる他のパラメータの設定は、Buddy APIではFlagsパラメータで行います。パラメータは整数で指定します。以下の確認や警告のダイアログボックスを表示できます。

存在しないファイル作成の確認: 8192。FileXtraのcreatePromptに相当します。
ファイルが見つからない警告: 4096。FileXtraのfileMustExistに相当します。
ファイル上書きの警告: 2。 FileXtraのoverwritePromptに相当します。

デフォルトの設定を使う場合には、Flagsを0に指定します。上記の設定を使用する場合には、その数値をFlagsに加算します。つまり複数の設定を行うときは、それらの数値の合計で指定します。FileXtraとBuddy APIのメソッド使用例を以下に示します。それぞれが、ほぼ同じ設定のダイアログボックスを表示します。

-- [開くダイアログボックスの表示]
put FileOpenDialog(the moviePath, "テキスト/*.txt/すべてのファイル/*.*", "開く", 0, 1)

put baGetFilename("open", the moviePath, empty, "テキスト|*.txt|すべてのファイル|*.*", 4096, "開く", 0, -2, 0)

-- [保存ダイアログボックスの表示]
put FileSaveAsDialog(the moviePath, "Temp.txt", "名前を付けて保存", 1)

put baGetFilename("save", the moviePath, "Temp.txt", empty, 2, "名前を付けて保存", 0, -2, 0)

なお、'baGetFilename'メソッドのパラメータXとYは、ダイアログボックスの表示位置をピクセルで座標指定します。ただし、Xに-2を指定するとディスプレイの中心、-1はアプリケーションウィンドウの中心に、ダイアログボックスを表示します。

ID: dr0158
Product: Director
Versions: 7
OS: All
Browser: N/A
Server: N/A
Database: N/A
Former ID: N/A