目次に戻る
ファイルのパス
2002/09/28 update.
外部ファイルの読み込み・書き込みを行うクラスとして「CPFileCtrl」があります。
また、画像ファイルを読み込むクラスメソッドとして「CPImage::GetImageSize」「CPImage::LoadImage」があります。
これらのクラスでは、ファイルの位置指定時に、起動したアプリケーション(Shadeなど)を起点とした相対パスで指定します。

例えば、Shadeのフルパスを「C:\Program Files\Shade 6\advance\Shade 6 advance.exe」とした場合に、[plugins]フォルダ内のファイル[test.dat]を読み込む例を示します。


CPFileCtrl f;
char szBuff[256];
char szPath[256];

//Shadeのパスを起点としたときの絶対パスを取得
CPartsSI_GetFullPath("plugins/test.dat",szPath,255);

//ファイルを読み込み専用で開く
if(f.Open(szPath)){
    //ファイルよりデータを読み込み
    f.Read(szBuff,255);

    //ファイルを閉じる
    f.Close();
}


この例では、「C-Parts - Shadeブリッジ」の「CPartsSI_GetFullPath」により、Shadeのパスと指定の相対パスを組み合わせて、 絶対パスを取得します。
このときのszPathは「C:/Program Files/Shade 6/advance/plugins/test.dat」が入ります(Macintoshでは「plugins/test.dat」のままです)。

フォルダのセパレータが「/」となっているのは、WindowsでもMacintoshでも同じです。
C-Parts内部では、フォルダのセパレータの「/」を各OS依存の型に自動変換します(依存性の吸収のため)。

ここで取得できたszPathを「CPFileCtrl::Open」に渡しています。

Macintoshの場合は、カレントフォルダが移動することはないため、「CPartsSI_GetFullPath」の処理では絶対パスを求める必要がありません。
また、絶対パスは意識する必要はありません。