相対パスの求め方について – プログラミング – Home

相対パスの求め方について
 
通知
すべてクリア

[解決済] 相対パスの求め方について


Air
 Air
(@Air)
ゲスト
結合: 20年前
投稿: 33
Topic starter  

いつもお世話になってます、Airです。
表題のとおり、相対パスについての質問です。

私のプログラムを例にとり説明させていただきますと
Aという3Dモデルのファイルがあります。
そしてBというテクスチャ画像のファイルがあります。

AのモデルにBのテクスチャを張って、Aをセーブします。
すると当然AはBのテクスチャを張っているわけですから
Bのファイルパスも自分のデータに入れてセーブします。

この時に、Aのデータとして持たせるBのパスを
絶対パスではなく、Aから見た相対パスとして
一緒に保存したいのです
この相対パスの求め方をどうしたものかと悩んでおります。
皆様ならどのようにされるでしょうか?

良きアドバイスをよろしくお願いします。
読みづらい文章で申し訳ありません。

[ 開発環境 ]
Window XP
VC++ 6.0 MFC


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

未検証なので微妙なところが違っていると思いますが、
私なら、だいたいこんな感じでやると思います。

方針:
パスが一致するまで、Aのパスを縮めてゆき、
一致したら、縮めた数だけの..と、不一致な残り部分を連結する。

Aの絶対パスを D1:\F11\F12\F13\...\F1n\A
Bの絶対パスを D2:\F21\F22\F23\...\F2m\B

Dx : ドライブ文字
Fxy : フォルダ名

とします。

if ( D1 != D2 ) {
ドライブが違うので不可能;
} else {
String relPath;
for ( k = n; k >= 1; --k ) {
if ( k <= m && F11~F1k までが F21~F2kまでと一致する) {
break;
}
relPath += ..\;
}
return relPath + F2(k+1)\F2(k+2)\...\F2m\B;
}


返信引用
こじま
 こじま
(@こじま)
ゲスト
結合: 22年前
投稿: 19
 

PathRelativePathTo
とういうAPIがあります。


返信引用
Air
 Air
(@Air)
ゲスト
結合: 20年前
投稿: 33
Topic starter  

ご返答ありがとうございます。

PathRelativePathTo が使えそうな感じなので
これでいってみようと思います。
dairygoods さんのご意見も大変勉強になりました。
ありがとうございました。

また何かありましたら、よろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました