|
|
||||
Tips > |
|||||
同一のルートパスかどうか判定(PathIsSameRoot) |
更新 : 2011/07/09 |
||||
|
|
||
解説: アプリケーション内で取得した二つのパスが、同じであるのか違うのか比較したいときがあります。 Win32API 関数、PathIsSameRoot を使えばそれが行えます。 PathIsSameRoot 関数は引数に二つのパスを指定して、戻り値が true なら同一、false なら異なることが分かります。 ちょっと寄り道: BOOL PathIsSameRoot(LPCTSTR Path1, LPCTSTR Path2); Path1 判定するひとつ目のパス。 Path2 判定する二つ目のパス。 戻り値は、同じパスであれば true を違えば false を返す。 使用例: 以下の例では、アプリケーション起動後、Button1 をクリックすると、指定したパスが同じなら 1 を違えば 0 をメッセージとして返します。 準備は Button を適当に配置するだけです。 "shlwapi.h" をインクルードして、#pragma comment にスタティックライブラリ "shlwapi.lib" を 追加しておきます。 OnClick イベントハンドラで patht1 と path2 にパスを代入して、PathIsSameRoot 関数に渡し、 同じパスかどうかを調べています。 同一パスであれば "1"、違えば "0" のメッセージを表示します。 path1, path2 にいろいろなパスを代入してチェックしてみてください。 #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") //------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { char *path1 = "C:\\abc\\My Documents\\kiki.vkl"; char *path2 = "C:\\bgr\\src\\VBDeFM.c"; // 同じルートならば True が返る。 bool ret = PathIsSameRoot(path1, path2); ShowMessage(IntToStr(ret)); } //------------------------------------------------------------------- |