システムドキュメント

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11 (Modified)


概要

コンピュータで使用する全てのドキュメントとアプリケーションは、自身のマシンに実装または接続されているハードディスクやフロッピーディスク、その他の類似する恒久的なストレージ装置内にファイルとして格納されています。4Dでは、これらのドキュメントやアプリケーションに言及する際、ファイルまたはドキュメントという表現を使用します。しかし、このテーマのほとんどのコマンドにおいては、"ドキュメント" という表現が使用されています。それは、多くの時間、ユーザはこれらのコマンドを使用して、(アプリケーションやシステムファイルよりも) ディスク内のドキュメントにアクセスするからです。

ハードディスクは、1つまたは複数のパーティションとしてフォーマットされます。それぞれのパーティションはボリュームと呼ばれ、2つのボリュームが、物理的に同じハードディスク内に存在しても問題はありません。4Dの最初のレベルでは、通常、これらのボリュームを個別で等しい実体として扱います。

ボリュームはマシンに物理的に接続されているハードディスク、あるいはNetBEUI (Windows) やAFP (Macintosh) のようなファイル共有プロトコルを通してマウントされたハードディスクに置かれています。いかなる場合でも、4Dレベルでシステムドキュメントコマンドを使用する際、これら全てのボリュームを同じ方法で扱います (方法について熟知していて、プラグインを使用してアプリケーションの能力を拡大する場合は例外です) 。

それぞれのボリュームには、ボリューム名が付けられています。Windowsではボリューム名の後にコロンを続けてボリュームを指定します。通常、A:B: を使用して、5.25インチまたは3.5インチのフロッピーディスクドライブを表します。C: は、システムを起動するために使用するボリュームを指定します (特にPCに環境設定をしない場合) 。D:から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

Note: バックスラッシュ(\) は、4Dのメソッドエディタでエスケープシーケンスを指定するために使用されます。解釈上の問題を回避するために、エディタは自動的にパス名を変更します。例えば、C:\DiskからC:\\Diskへと変換します。詳細については後述の"ドキュメント名、またはドキュメントのパス名を指定する" 項目を参照してください。.

Macintoshではこれらの全てが、 Internal Driveディスク(ボリューム) に保存されていれば、そのドキュメントのパス名は次のようになります。

Internal Drive:Current Work:Documents:Memos:Important Memo

Windowsの例ではドキュメントの名前に接尾辞.TXTが付いています。その理由は、次のセクションで説明します。

いかなるプラットフォームでも、ドキュメントの完全なパス名は次のように表示されます。

VolName DirSep { DirName DirSep { DirName DirSep { ... } } } DocName

ボリュームにあるすべてのドキュメント (ファイル) には、幾つかの特性があります。通常、属性またはプロパティと呼ばれるものと、ドキュメントの名前タイプ、クリエータなどがあります。

ドキュメントタイプとクリエータ


Windowsでは、ドキュメントにタイプがあります。Macintoshではタイプに加えてクリエータがあります。一般的にドキュメントのタイプは、ドキュメントについてやそのドキュメントには何が含まれているかを示します。例えばテキストドキュメントには任意のテキストが含まれています (スタイルバリエーションは無し) 。

ドキュメントのタイプは、ドキュメント名に付加された接尾辞 (ファイル拡張子) によって決定されます。例えば、.TXTまたは.TEXTは、テキストドキュメントのファイル拡張子です。この原理はMac OS Xのもとでは同じです。しかし、システムの以前のバージョンとの互換性の理由により、ファイルタイプのプロパティが特定されている場合、そのドキュメントタイプはファイルタイプのプロパティによって決定されます。このプロパティは4文字です (Finderレベルでは表示されません) 。例を挙げると、テキストドキュメントのファイルタイプは"TEXT"になります。

更に、ドキュメントはクリエータを保持することもあります。クリエータは、そのドキュメントを作成したアプリケーションを指定します。このコンセプトはWindowsでは存在しません。ドキュメントのクリエータは、ファイルクリエータプロパティによって決定されます。ドキュメントがタイプとクリエータの両方のプロパティを保持している場合、Mac OSはドキュメントの拡張子に関係なくそれらを考慮します。

DocRef: ドキュメント参照番号


ドキュメントは、読み/書きモードで開く読み込み専用モードで開く、または閉じます。ビルトインの4Dコマンドを使用して、一度のプロセスでドキュメントを読み/書きモードで、素早く開くことができます。1つのプロセスで複数のドキュメントを開くことが可能です。複数のプロセスでは、ドキュメントを多重に開くことができます。読み込み専用モードで同じドキュメントを必要な回数だけ開くことができます。しかし、読み/書きモードでは、一度に同じドキュメントを2つ開くことはできません。

Open documentCreate documentそしてAppend documentコマンドを使用してドキュメントを開きます。Create documenAppend documentコマンドは、自動的にドキュメントを読み/書きモードで開きます。Open documentコマンドを使用する場合のみ、開くモードを選択できます。ドキュメントが開くと、ドキュメントから読み込みをしたり、ドキュメントへ書き出しをしたりできます (RECEIVE PACKETSEND PACKETコマンドを参照) 。ドキュメントでの作業が終了したらCLOSE DOCUMENTコマンドを使用してドキュメントを閉じます。

全ての開かれたドキュメントは、Open documentCreate documentそしてAppend documentコマンドから返されたDocRef式を使用して参照されます。DocRefは開かれたドキュメントを識別するために使用します。DocRefは時間タイプの式です。開かれたドキュメントを操作する全てのコマンドは、引数としてDocRefを受け取ります。誤ったDocRefをこれらのコマンドの1つに渡すと、ファイルマネージャエラーが発生します。

I/Oエラーを処理する


ドキュメントにアクセス (開く、閉じる、削除する、名前を変更する、コピーする) したり、ドキュメントのプロパティを変更したり、ドキュメントで文字を読んだり書いたりすると、I/Oエラーが発生することがあります。ドキュメントが見つからないこともありますし、ロックされていることもあります。また、書き込みモードで既に開いていることもあります。ON ERR CALLを用いてインストールされたエラー処理メソッドで、これらのエラーを検知することができます。システムドキュメントを使用している間に発生するほとんどのエラーに関しては、OS ファイルマネージャエラー節で説明しています。

ドキュメントシステム変数


コマンドOpen documentCreate documentAppend documentそしてSelect documentを使用して、標準的なファイルを開くまたは保存するダイアログボックス経由でドキュメントへアクセスできます。 標準ダイアログを通してドキュメントにアクセスすると、Documentシステム変数にドキュメントの完全なパス名が返されます。このシステム変数は、コマンドの引数リストに表示される引数documentと区別されなければなりません。

ドキュメント名またはドキュメントのパス名を指定する


この節にある、ドキュメント名の必要なほとんどのルーチンでは、ドキュメント名とパス名の両方を使用できます (特に指定された場合は例外) 。名前を渡した場合、コマンドはデータベースのフォルダ内でドキュメントを探します。パス名を渡した場合、それは有効でなければなりません。

正しくない名前やパス名を渡した場合、コマンドはファイルマネージャエラーを発生させます。このエラーはON ERR CALL メソッドを使用して検知することが可能です。

Windowsのパス名の入力とエスケープシーケンス

4Dのメソッドエディタではエスケープシーケンスの使用が可能です。エスケープシーケンスとは、文字列のセットで、"特殊" 文字を置き換えるために使用します。シーケンスはバックスラッシュ(\: 日本語フォント環境では円マーク) で始まり、その後に文字が続きます。例えば、\tは、Tab 文字のエスケープシーケンスになります。

Windowsでは、\文字を使用して、パス名を区切ります。4Dでは、ほとんどの場合、シングルバックスラッシュをダブルバックスラッシュに置き換えることによって、Windowsのメソッドエディタに入力されているパス名を、正確に判断します。例を挙げると、C:\FolderC:\\Folderとなります。

しかし、C:\MyDocuments\Newと書くと、4DはC:\\MyDocuments\Newと表示します。この場合、2番目の\は、\N (存在しているエスケープシーケンス) として正確に判断されません。従って、4Dで識別されているエスケープシーケンスの1つで使用される文字の前にバックスラッシュを挿入したいときは、マニュアルで\\を入力しなければなりません。

4Dは次のエスケープシーケンスを識別します。

エスケープシーケンス置き換え文字
\nLF (New line)
\tHT (Horizontal tab)
\rCR (Carriage return)
\\\ (Backslash)
\"" (Quotes)

ディスクでドキュメントを処理する時に使用する便利なプロジェクトメソッド


・起動しているプラットフォームで検知する

プラットフォームの仕様上の違いに基づく複数のコーディングを避けるために4DはMAP FILE TYPESのようなコマンドを提供していますが、ディスクでドキュメントを処理する際、下位レベルで作業を開始するときは (例えば、プログラミングでパス名を取得するなど) 、MacintoshまたはWindowsのプラットフォームのどちらで起動しているかを知っていなければなりません。

次のOn Windowsプロジェクトメソッドは、データベースがWindows上で起動しているかどうかをテストします。

      ` On windows プロジェクトメソッド
      ` On windows -> ブール
      ` On windows -> WindowsであればTrue

   C_BOOLEAN($0)
   C_LONGINT($vlPlatform;$vlSystem;$vlMachine)

   PLATFORM PROPERTIES($vlPlatform;$vlSystem;$vlMachine)
   $0:=($vlPlatform=Windows)

・正しいディレクトリ区切り記号を使用する

Windowsでは、ディレクトリレベルをバックスラッシュ(\) によって表します。Macintoshは、フォルダレベルをコロン(:) によって表します。どちらのプラットフォームで起動しているかに基づいて、次のDirectory symbolプロジェクトメソッドは、正確なディレクトリ記号(文字) のコードを返します。

      ` Directory symbol プロジェクトメソッド
      ` Directory symbol -> 整数
      ` Directory symbol -> "\" (Windows) または ":" (Mac OS)のコード 

   C_INTEGER($0)

   If (On Windows )
      $0:=Character code("\\")
   Else 
      $0:=Character code(":")
   End if 

・長い名前からファイル名を抽出する

長いドキュメント名を取得してしまうと(パス名+ファイル名) 、その長い名前からドキュメントのファイル名を抽出しなければならないことがあります。例えば、ウィンドウのタイトルにその名前を表示する場合などです。Long name to file name プロジェクトメソッドは、WindowsとMacintoshの両方でこれを実行します。

      ` Long name to file name プロジェクトメソッド
      ` Long name to file name ( 文字列 ) -> 文字列
      ` Long name to file name ( Long file name ) -> file name

   C_STRING(255;$1;$0)
   C_INTEGER($viLen;$viPos;$viChar;$viDirSymbol)

   $viDirSymbol:=Directory symbol 
   $viLen:=Length($1)
   $viPos:=0
   For ($viChar;$viLen;1;-1)
      If (Character code($1[[$viChar]])=$viDirSymbol)
         $viPos:=$viChar
         $viChar:=0
      End if 
   End for 
   If ($viPos>0)
      $0:=Substring($1;$viPos+1)
   Else 
      $0:=$1
   End if 
   If (<>vbDebugOn) `On Startupデータベースメソッドで、変数をTrueまたはFalseで設定する。
      If ($0="")
         TRACE
      End if 
   End if 

・長い名前からパス名を抽出する

長いドキュメント名を取得してしまうと(パス名+ファイル名) 、その長い名前からドキュメントが置かれているディレクトリのパス名を抽出しなければならないことがあります。例えば、同じ場所にドキュメントを追加して保存したい場合などです。Long name to file name プロジェクトメソッドは、WindowsとMacintoshの両方でこれを実行します。

      ` Long name to path name プロジェクトメソッド
      ` Long name to path name ( 文字列 ) -> 文字列
      ` Long name to path name ( Long file name ) -> Path name

   C_STRING(255;$1;$0)
   C_STRING(1;$vsDirSymbol)
   C_INTEGER($viLen;$viPos;$viChar;$viDirSymbol)

   $viDirSymbol:=Directory symbol 
   $viLen:=Length($1)
   $viPos:=0
   For ($viChar;$viLen;1;-1)
      If (Character code($1[[$viChar]])=$viDirSymbol)
         $viPos:=$viChar
         $viChar:=0
      End if 
   End for 
   If ($viPos>0)
      $0:=Substring($1;1;$viPos)
   Else 
      $0:=$1
   End if 
   If (<>vbDebugOn) `On Startupデータベースメソッドで、変数をTrueまたはFalseで設定する。
      If ($0="")
         TRACE
      End if 
   End if 

参照

Append document, CLOSE DOCUMENT, COPY DOCUMENT, Create document, CREATE FOLDER, DELETE DOCUMENT, Document creator, DOCUMENT LIST, Document type, FOLDER LIST, Get document position, GET DOCUMENT PROPERTIES, Get document size, MAP FILE TYPES, MOVE DOCUMENT, Open document, Select document, SET DOCUMENT CREATOR, SET DOCUMENT POSITION, SET DOCUMENT PROPERTIES, SET DOCUMENT SIZE, SET DOCUMENT TYPE, Test path name, VOLUME ATTRIBUTES, VOLUME LIST.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次