メインコンテンツまでスキップ
バージョン: 20 R7 BETA

Open resource file

Open resource file ( resFilename {; fileType} ) -> 戻り値

引数説明
resFilenameTextリソースファイルのファイル名またはフルパス名, または 空の文字列を指定するとファイルを開くダイアログボックスを表示
fileTypeTextMac OSファイルタイプ (4文字)、または Windowsファイル拡張子(1から3文字)、または 省略時、すべてのファイル
戻り値Timeリソースファイル参照番号

このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。

説明

Open resource fileコマンドは、resFileNameに渡した名前またはパス名を持つリソースファイルを開きます。

ファイル名を渡す場合、そのファイルはデータベースのストラクチャファイルと同階層に配置されていなければなりません。他のフォルダ内に配置されているリソースを開くには、フルパス名を渡します。

resFileNameに空の文字列を渡すと、ファイルを開くダイアログボックスが表示されます。このダイアログボックスでリソースファイルを選択し、開くことができます。ダイアログボックスを取り消すと、リソースファイルは開かれません。この場合、Open resource fileはヌルのDocRefを返し、システム変数OKに0を設定します。

リソースファイルが正常に開かれると、Open resource fileはそのリソースファイル参照番号を返し、システム変数OKに1を設定します。リソースファイルが存在しない場合や開こうとしているファイルがリソースファイルではない場合、エラーが生成されます。

  • Macintosh上でファイルを開くダイアログボックスを使用する場合、デフォルトですべてのファイルが表示されます。特定タイプのファイルを表示するには、オプション引数fileTypeにそのファイルタイプを指定します。
  • Windows上でファイルを開くダイアログボックスを使用する場合、デフォルトですべてのファイルが表示されます。ファイルの特定タイプを表示するには、1から3文字のWindowsファイル拡張子または*_o_MAP FILE TYPESコマンドを使ってマップされた任意のMacintoshファイルタイプをオプション引数fileType*に渡します。

リソースファイルを使い終わったらCLOSE RESOURCE FILEコマンドの呼び出しを忘れないでください。ただし、アプリケーションを終了する (または他のデータベースを開く) 場合は、Open resource fileを使って開かれたすべてのリソースファイルを4Dが自動的に閉じます。

デフォルトで排他的に読み書きモードでファイルを開くOpen documentコマンドと違って、Open resource fileは4Dセッション内で既に開かれているリソースファイルを開くことを妨げません。例えばOpen document を使って同じドキュメントを2度開こうとすると、2度目を開く時にI/Oエラーが返されます。これに対して、4Dセッション内で既に開かれているリソースファイルを開こうとすると、Open resource fileは既に開いているファイルのリソースファイル参照番号を返します。何度かリソースファイルを開いても、そのリソースファイルを閉じるには1回だけCLOSE RESOURCE FILEを呼び出すだけで済みます。このことは、4Dセッション内でリソースファイルが開かれる場合にのみ有効である点に注意してください。他のアプリケーションで既に開かれているリソースファイルを開こうとすると、I/Oエラーが発生します。

警告:

  • 4Dアプリケーションや、4D Desktopをマージしたアプリケーションのリソースファイルへのアクセスは禁止されています。
  • 技術的には可能ですが、コンパイルされたり4D Desktopをマージしたデータベースではプログラムコードは動作しなくなるので、データベースストラクチャリソースファイルは使用しないことをお勧めします。
    しかしながら、プログラムをしようしてこのリソースにアクセスし、追加、削除、変更をするつもりなら、ご使用になる動作環境で必ずテストしてください。 4D Server上では重大な問題に通じるでしょう。 例えばサーバマシン上で (データベースメソッドかストアドプロシージャを使用して) リソースを変更すると、透過的にワークステーションにリソースを分配する4D Serverの管理サービスに確実に影響するでしょう。 4D Clientではストラクチャファイルに直接アクセスする手段を持っていないことに注意してください。ストラクチャファイルは、サーバマシンにあるからで す。
  • この理由により、リソースを使用する場合、そのリソースは自身のファイルに格納してください。
  • 独自のリソースを使って作業する場合、負数のリソースIDを使用してはいけません。これはオペレーションシステムで使用されるために予約されてい ます。また0から14999の範囲のリソースIDを使用してもいけません。この範囲は、4Dで使用されるために予約されている番号です。カスタムリソース には15,000から32,767の範囲の番号を使用してください。あるリソースファイルを開くと、そのファイルがリソースチェーン内で検索される最初の ファイルとなることを覚えておいてください。システムまたは4Dリソースの範囲内のIDを持つリソースをそのファイルに格納すると、GET RESOURCE コマンドや4Dの内部ルーチンはそのリソースを見つけます。これが目的とする結果かもしれませんが、もしそうでない場合は、システムエラーを引き起こすかもしれないため、この範囲の値を使用してはいけません。
  • リソースファイルは高度に構造化されたファイルで、1ファイル当たり2,700を超えるリソースを許可しません。数多くのリソースを含んでいるリ ソースファイルで作業する場合、そのリソースファイルに新しいリソースを追加する前にそのリソースの数を調べるべきです。これについては、RESOURCE TYPE LISTの例題のCount resourcesを参考にしてください。

リソースファイルを開くと、RESOURCE TYPE LISTRESOURCE LISTを使って、そのファイルの内容を解析できます。

例題 1

Windows上で、以下の例はデータベースフォルダに配置された“MyPrefs.res”リソースファイルを開きます:

 $vhResFile:=Open resource file("MyPrefs";"res ")

Macintosh上で、この例は“MyPrefs”ファイルを開きます。

例題 2

Windows上で、以下の例はデータベースフォルダに配置された“MyPrefs.rsr”リソースファイルを開きます:

 $vhResFile:=Open resource file("MyPrefs";"rsr")

Macintosh上で、この例は“MyPrefs”ファイルを開きます。

例題 3

以下の例は、すべてのファイルタイプを表示するファイルを開くダイアログボックスを表示します:

 $vhResFile:=Open resource file("")

例題 4

以下の例は、デフォルトファイルタイプを使ってコマンドで作成されたファイルを表示するファイルを開くダイアログボックスを表示します:

 $vhResFile:=Open resource file("";"res ")
 If(OK=1)
    ALERT("You just opened "+Document+”.")
    CLOSE RESOURCE FILE($vhResFile)
 End if

システム変数およびセット

リソースファイルが正しく開かれるとOK変数は1に設定されます。リソースファイルが開けないか、ファイルを開くダイアログボックスがユーザによりキャンセルされると、OKは0に設定されます。

ファイルを開くダイアログを使用してリソースファイルが開かれると、Document変数にはそのファイルへのパスが格納されます。

エラー管理

リソースファイルまたはI/Oの問題でリソースを開くことができなかった場合、エラーが生成されます。ON ERR CALLコマンドを使ってインストールされたエラー処理メソッドでこのエラーを受け取ることができます。

参照

CLOSE RESOURCE FILE
リソース