4D v16.3システムドキュメント |
||||||||||||||
|
4D v16.3
システムドキュメント
システムドキュメント
コンピューターで使用する全てのドキュメントとアプリケーションは、自身のマシンに実装または接続されているハードディスクやフロッピーディスク、その他の類似する恒久的なストレージ装置内にファイルとして格納されています。4Dでは、これらのドキュメントやアプリケーションに言及する際、ファイルまたはドキュメントという表現を使用します。しかし、このテーマのほとんどのコマンドにおいては、"ドキュメント" という表現が使用されています。それは、多くの時間、ユーザはこれらのコマンドを使用して、(アプリケーションやシステムファイルよりも) ディスク内のドキュメントにアクセスするからです。 ハードディスクは、1つまたは複数のパーティションとしてフォーマットされます。それぞれのパーティションはボリュームと呼ばれ、2つのボリュームが、物理的に同じハードディスク内に存在しても問題はありません。4Dの最初のレベルでは、通常、これらのボリュームを個別で等しい実体として扱います。 ボリュームはマシンに物理的に接続されているハードディスク、あるいはTCP/IPやAFP、SMBなどのようなファイル共有プロトコルを通してマウントされたハードディスクに置かれています。いかなる場合でも、4Dレベルでシステムドキュメントコマンドを使用する際、これら全てのボリュームを同じ方法で扱います (方法について熟知していて、プラグインを使用してアプリケーションの能力を拡大する場合は例外です) 。 それぞれのボリュームには、ボリューム名が付けられています。Windowsではボリューム名の後にコロンを続けてボリュームを指定します。通常CやDはシステムを起動するボリュームを指定するために使用されます (特にPCで設定変更しない場合) 。EからZの文字は、PC(DVDドライブ、追加ドライブ、ネットワークドライブ等) に接続、または実装されている付加ボリューム用に使用されます。Macintoshでは、ボリューム名はそのままです。これらは、デスクトップ上のFinderレベルで見ることができます。 通常、ドキュメントをフォルダーへ分類します。そして、そのフォルダー自体、他のフォルダーを格納しています。同じボリュームのレベルで何千というファイルを蓄積するのは良い方法ではありません。乱雑ですし、システムの速度を低下させます。Windowsでは、フォルダーをディレクトリと呼び、Macintoshでは、そのままフォルダーと呼びます。 ドキュメントを区別するには、そのドキュメントが保存されているフォルダの名前とボリュームの名前、そして、そのドキュメント自体の名前を知る必要があります。これらすべての名前を連結し、そのドキュメントへのパス名 を取得します。このパス名においてフォルダ名は、フォルダーセパレーター記号と呼ばれる特殊文字で区切られます。Windowsではその文字はバックスラッシュ(\: 日本語フォント環境では円マーク)です。Macintoshでは、コロン(:)になります。 では例を見てみましょう。Current Workフォルダー内にあるDocumentsフォルダーのMemosフォルダーに保存されているドキュメントImportant Memoがあります。 Windowsでは、これらのすべてがCドライブ(ボリューム) に保存されていれば、そのドキュメントのパス名は次のようになります。 C:\Current Work\Documents\Memos\Important Memo.TXT 注: バックスラッシュ(\) は、4Dのメソッドエディタでエスケープシーケンスを表すために使用されます。解釈上の問題を回避するために、エディタは自動的にパス名を変更します。例えば、C:\DiskからC:\\Diskへと変換します。詳細については後述の"ドキュメント名、またはドキュメントのパス名を指定する" 項目を参照してください。. Macintoshではこれらの全てが、 Internal Driveディスク(ボリューム) に保存されていれば、そのドキュメントのパス名は次のようになります。 Internal Drive:Current Work:Documents:Memos:Important Memo いかなるプラットフォームでも、ドキュメントの完全なパス名は次のように表示されます。 VolName DirSep { DirName DirSep { DirName DirSep { ... } } } DocName ドキュメントは、読み/書きモードで開く、読み込み専用モードで開く、または閉じます。ビルトインの 4Dコマンドを使用して、一度のプロセスでドキュメントを読み/書きモードで、素早く開くことができます。1つのプロセスで複数のドキュメントを開くこと が可能です。複数のプロセスでは、ドキュメントを多重に開くことができます。読み込み専用モードで同じドキュメントを必要な回数だけ開くことができます。 しかし、読み/書きモードでは、一度に同じドキュメントを2つ開くことはできません。 Open document、Create document そして Append document コマンドを使用してドキュメントを開きます。Create document と Append document コマンドは、自動的にドキュメントを読み/書きモードで開きます。Open document コマンドを使用する場合のみ、開くモードを選択できます。ドキュメントが開くと、ドキュメントから読み込みをしたり、ドキュメントへ書き出しをしたりできます (RECEIVE PACKET と SEND PACKET コマンドを参照) 。ドキュメントでの作業が終了したら CLOSE DOCUMENT コマンドを使用してドキュメントを閉じます。 全ての開かれたドキュメントは、Open document、Create document そして Append document コマンドから返されたDocRef式 を使用して参照されます。DocRefは開かれたドキュメントを識別するために使用します。DocRefは時間タイプの式です。開かれたドキュメントを操 作する全てのコマンドは、引数としてDocRefを受け取ります。誤ったDocRefをこれらのコマンドの1つに渡すと、ファイルマネージャエラーが発生 します。 注: プリエンプティブ・プロセスからコールされた場合に生成される DocRef 参照は同プリエンプティブ・プロセスでのみ使用可能です。コオペラティブ・プロセスからコールされた場合に生成される DocRef 参照は別のコオペラティブ・プロセスでも使用可能です。 ドキュメントにアクセス (開く、閉じる、削除する、名前を変更する、コピーする) したり、ドキュメントのプロパティを変更したり、ドキュメントで文字を読んだり書いたりすると、I/Oエラーが発生することがあります。ドキュメントが見つからないこともありますし、ロックされていることもあります。また、書き込みモードで既に開いていることもあります。ON ERR CALLを用いてインストールされたエラー処理メソッドで、これらのエラーを検知することができます。システムドキュメントを使用している間に発生するほとんどのエラーに関しては、で説明しています。 コマンドOpen document、Create document、Append documentそしてSelect documentを使用して、標準的なファイルを開くまたは保存するダイアログボックス経由でドキュメントへアクセスできます。 標準ダイアログを通してドキュメントにアクセスすると、Documentシステム変数にドキュメントの完全なパス名が返されます。このシステム変数は、コマンドの引数リストに表示される引数documentと区別されなければなりません。 Document システム変数についてのより詳細な情報については、システム変数 の章に説明があります。 この節にある、ドキュメント名の必要なほとんどのルーチンでは、ドキュメント名とパス名の両方を使用できます (特に指定された場合は例外) 。名前を渡した場合、コマンドはデータベースのフォルダ内でドキュメントを探します。パス名を渡した場合、それは有効でなければなりません。 正しくない名前やパス名を渡した場合、コマンドはファイルマネージャエラーを発生させます。このエラーはON ERR CALL メソッドを使用して検知することが可能です。 4Dのメソッドエディタではエスケープシーケンスの使用が可能です。エスケープシーケンスとは、文字 列のセットで、"特殊" 文字を置き換えるために使用します。シーケンスはバックスラッシュ(\: 日本語フォント環境では円マーク) で始まり、その後に文字が続きます。例えば、\t は、Tab 文字のエスケープシーケンスになります。 Windowsでは、\文字を使用して、パス名を区切ります。4Dでは、ほとんどの場合、シングルバックスラッシュをダブルバックスラッシュに置き換えることによって、Windowsのメソッドエディタに入力されているパス名を、正確に判断します。例を挙げると、C:\Folder はC:\\Folderとなります。 4Dは次のエスケープシーケンスを識別します。
ドキュメントやフォルダーを管理する4Dコマンドは多くの場合相対パスと絶対パスの両方をサポートします:
コマンドに渡されるパス名が相対・絶対どちらで解釈されるべきかを決定するため、4Dは各プラットフォームごとに特定のアルゴリズムを適用します。 絶対パスと解釈されるケース
その他のケースはすべて相対パスと解釈されます。 CREATE FOLDERコマンドの例題: CREATE FOLDER("Monday") // 相対パス 相対パスと解釈されるケース
それ以外のケースはすべて絶対パスです。 CREATE FOLDERコマンドの例題: CREATE FOLDER("Monday") // 相対パス
プラットフォームの仕様上の違いに基づく複数のコーディングを避けるために、4DはMAP FILE TYPESのようなコマンドを提供していますが、ディスク上のドキュメントを処理するような低レベルで作業を開始するときは (例えば、プログラミングでパス名を取得するなど) 、MacintoshまたはWindowsのプラットフォームのどちらで起動しているかを知る必要があります。 次のOn Windowsプロジェクトメソッドは、データベースがWindows上で起動しているかどうかをテストします。 // On Windows プロジェクトメソッド
Windowsではディレクトリレベルをバックスラッシュ(\) によって表します (日本語フォント環境では円マーク)。Macintoshはフォルダレベルをコロン(:) によって表します。どちらのプラットフォームで起動しているかに基づいて、次のDirectory symbolプロジェクトメソッドは、正確なディレクトリ記号(文字) のコードを返します。
// Directory symbol プロジェクトメソッド 互換性に関する注意: 4Dバージョン12より、Folder separator定数 (System Documentsテーマ) を使用して、OSに左右されない有効なパス名を構築することをお勧めします。この定数は自動でOSに対応する区切り文字を返します (Unicodeモードのみ)。
長いドキュメント名を取得してしまうと(パス名+ファイル名) 、その長い名前からドキュメントのファイル名を抽出しなければならないことがあります。例えば、ウィンドウのタイトルにその名前を表示する場合などです。Long name to file name プロジェクトメソッドは、WindowsとMacintoshの両方でこれを実行します。 //Long name to file name プロジェクトメソッド
長いドキュメント名を取得してしまうと(パス名+ファイル名) 、その長い名前からドキュメントが置かれているディレクトリのパス名を抽出しなければならないことがあります。例えば、同じ場所にドキュメントを追加して保存したい場合などです。Long name to file name プロジェクトメソッドは、WindowsとMacintoshの両方でこれを実行します。 //Long name to path name プロジェクトメソッド
参照
Append document
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |
||||||||||||