ディスプレイ・パス > ディスプレイ・パス
 
ディスプレイ・パス
ディスプレイ・パス・メカニズムによって、ファイルへのアクセスが非常に簡単になります。ファイルを開き、読み込む関数の呼び出しで使用されるパス名が相対的な場合、関数はディスプレイ・パスで指定されたディレクトリーでファイル名を検索します。
IlvDisplay のメンバー関数は、ディスプレイ・パスをチェックしたり操作したり、ファイル名がディスプレイ・パスで指定されたディレクトリーに存在するかどうかをチェックするために使用できます。
ディスプレイ・パス・メカニズムの詳細については、 以下を参照してください。
*ディスプレイ・パスの設定
*パス・リソース
*ILVPATH 環境変数
*ディスプレイ・パスの問い合わせまたは変更
*例:ディレクトリーをディスプレイ・パスに追加する
ディスプレイ・パスの設定
ディスプレイ・パスは複数のディレクトリー・パス名を含む文字列で、通常のシステム・パス区切り文字 (UNIX では「:」、DOS では「;」) で区切られています。
最初 (IlvDisplay インスタンスの作成時) は、ディスプレイ・パスは次のように
3 つの異なる要素の連結に設定されています (UNIX 表記をパスに使用)。
<.:user path:system path:>
*最初のセクションは、現在のディレクトリーのみを含みます (e.=f と記述)。
*次のセクションである user path は、ディスプレイ・リソース path の内容で構成されており、環境変数 ILVPATH の内容が続きます。
*3 つ目のセクションである system path には、IlvHome のサブディレクトリーが含まれます。
すなわち、IlvPath の初期値は次のとおりです (ILVHOME が定義済みの場合)。
.:<path resource>:$ILVPATH:$ILVHOME/data:$ILVHOME/data/icon:$ILVHOME
data/images
パス・リソース
*X Window では、path リソースは次の例のようになります。
AppName*path:/usr/local/views/ilv
*Microsoft Windows では、path リソースは VIEWS.INI またはアプリケーションに依存するファイル .INI にあります。
[AppName]
path=C:\USER\DATA\ILV
ILVPATH 環境変数
ILVPATH 環境変数は、アプリケーションの起動前に設定できます。
*UNIX では、この設定は次の行で定義できます。
$ ILVPATH=/usr/home/user/ilvimages:/usr/home/user/ilvpanels
$ export ILVPATH
*Microsoft Windows コマンドのプロンプト・ウィンドウでは、設定は次のようになります。
C:\> SET ILVPATH=C:\USER\DATA\ILV;C:\USER\DATA\IMAGES
ディスプレイ・パスの問い合わせまたは変更
IlvDisplay クラスは、ディスプレイ・パスを操作するメンバー関数を備えています。これらは、getPathsetPathappendToPath、および prependToPath です。
これらのメソッドにより、user path (ディスプレイ・パスの 2 つ目のセクション) を取得、設定、変更できます。ディスプレイ・パスの構造は変更されず、以下のとおりになります。
<.:user path:system path.>
findInPath メソッドは以下に使用します。
*ファイルがディスプレイ・パスにあるかどうかをチェックします。
*絶対パス名を取得します。
例:ディレクトリーをディスプレイ・パスに追加する
次の例は、ディレクトリーをディスプレイ・パスに追加し、ファイルがディスプレイ・パスにあるかどうかをチェックする方法を示しています。
IlvDisplay* display = new IlvDisplay(“AppName”,
“DisplayName”,
argc,
argv);
if (display->isBad()) {
delete display;
IlvFatalError(“Could not create display”);
IlvExit(-1);
}
 
const char* dirName = “./localDirectory/subDirectory”;
const char* fileName = “foo.txt”;
display->prependToPath(dirName);
// Now, if a file such as
// “./localDirectory/subDirectory/foo.txt”
// or
// “.\localDirectory\subDirectory\foo.txt”
// exists, we should be able to find it.
const char* filePath = display->findInPath(fileName);
if (filePath)
IlvPrint(“File %s found at %s”, fileName, filePath);
else
IlvWarning(“File %s not found”, fileName);

Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.