Open document
Open document ( document {; fileType}{; mode} ) : Time
引数 | 型 | 説明 | |
---|---|---|---|
document | Text | → | ドキュメント名、または ドキュメントへの完全なパス名、または 空の文字列の場合、標準のファイルダイアログボックス表示 |
fileType | Text | → | 表示されるドキュメントタイプのリスト、または ドキュメントを表示しない"*" |
mode | Integer | → | ドキュメントを開くモード |
戻り値 | Time | ← | ドキュメント参照番号 |
説明
Open documentコマンドは、documentに渡した名前またはパス名を持つドキュメントを開きます。
documentに空の文字列を渡した場合、ファイルを開くダイアログボックスが表示され、開くドキュメントを選択できます。このダイアログをキャンセルするとドキュメントは開かれず、Open documentはドキュメント参照番号に空値を返し、システム変数OKに0を代入します。
- ドキュメントが正しく開かれると、Open documentはドキュメント参照番号を返し、システム変数OKに1を代入します。
- ドキュメントが既に読み込みのみモードで開かれていて、引数modeが省略されると、Open documentはデフォルトで読み書きモードでドキュメントを開き、OK変数に1を代入します。
- ドキュメントが読み書きモードで既に開かれていて、書き込みモードで開こうとすると、エラー (-43) が発生します。しかし読み込みのみモードで開くことはでき、この場合OKシステム変数は1に設定されます。
- ドキュメントが存在しない場合、エラーが発生します。
引数fileTypeには、開くダイアログボックスで選択するファイルのタイプを渡します。; (セミコロン) で区切られた幾つかのタイプのリストを渡すことができます。それぞれのタイプセットに対して、ダイアログボックスでタイプを選択する際に使用するメニューに、アイテムが追加されます。
Mac OSでは標準的なMac OSタイプ(TEXT、APPLなど) またはUTI (Uniformタイプ識別子) タイプのどちらかを渡します。ファイルタイプの標準化のニーズを満たすために 、UTIはAppleによって指定されます。例えば、"public.text" は、テキストタイプのファイルのUTIタイプとなります。UTIに関する詳細については、developer.apple.com のWebサイトにある、Introduction to Uniform Type Identifiers Overview page を参照してください。
Windowsでは、標準的なMac OSのファイルタイプ (4Dは内部的に対応を行います) またはファイル拡張子(.txt、.exe など) を渡します。Windowsでは、ダイアログボックスに"*.*"を入力することによって、全てのファイルタイプを表示させることができます。しかしこの場合、4Dは選択されたファイルタイプのチェックを追加して実行します。認識されていないファイルタイプが選択された場合、コマンドはエラーを返します。
表示されているファイルを1つ以上のタイプに限定したくない場合は、文字列"*" (アスタリスク) または".*" をfileTypeに渡します。
任意の引数modeは、ドキュメントがどのように開かれるかを指定することができるようにするものです。4つのオープンモードが指定可能です。4D には下記の定数が "System Documents" テーマで定義されています。
定数 | 型 | 値 |
---|---|---|
Get Pathname | 倍長整数 | 3 |
Read and Write | 倍長整数 | 0 |
Read Mode | 倍長整数 | 2 |
Write Mode | 倍長整数 | 1 |
ドキュメントが開かれると、Open documentはドキュメントの最初にファイルの書き込み/読み込み位置を設定します。一方、Append documentは、ドキュメントの最後にファイルの書き込み/読み込み位置を設定します。
ドキュメントを開くと、RECEIVE PACKETとSEND PACKET コマンドを使用してドキュメントを読んだり、書いたりすることができます。これらのコマンドをGet document position およびSET DOCUMENT POSITION コマンドと組み合わせることにより、ドキュメントのあらゆる箇所へ直接アクセスすることが可能となります。
最後に、開かれたドキュメントに対して、CLOSE DOCUMENTを呼び出すことを忘れないようにしてください。
例題 1
以下の例を使用して、Note.txtという既存のドキュメントを開き、"Good-bye"という文字列を書き込み、そしてドキュメントを閉じます。ドキュメントの既存の中身は上書きされます:
var vhDoc : Time
vhDoc:=Open document("Note.txt";Read and Write) //ノートというドキュメントを開く
If(OK=1)
SEND PACKET(vhDoc;"Good-bye") //ドキュメントに1語書き込む
CLOSE DOCUMENT(vhDoc) //ドキュメントを閉じる
End if
例題 2
ドキュメントがすでに書き込みモード開かれていても、読みをおこなうことはできます。
vDoc:=Open document("PassFile";"TEXT") //ファイルが開いている
//ファイルを閉じる前に、読み込み専用モードで検査できる
vRef:=Open document("PassFile";"TEXT";Read Mode)
システム変数およびセット
ドキュメントが正しく開かれると、OKシステム変数に1が代入されます。その他の場合は0が代入されます。呼び出し後、Documentシステム変数には完全なドキュメント名が入っています。
Open documentを3のモードで呼ぶと、関数は?00:00:00? (ドキュメント参照無し) を返します。ドキュメントは開きませんが、DocumentとOKシステム変数は更新されます。
- OKは1と等しい。
- documentには、完全なパス名とそのドキュメントの名前が入っています。
Note: 空の文字列をdocumentに渡した場合はファイルを開くダイアログボックスが表示されます。ドキュメントを選択しOKボタンをクリックすると、documentは選択したドキュメントのパスに設定され、OKに1が代入されます。Cancelボタンをクリックすると、OKに0が代入されます。