プログラム内で、自分自身のパスを取得したいことがある。
(多くは自分自身と同じディレクトリ内にあるファイルを参照したい場合等)
いくつかの方法があると思われるが、簡単な方と、どのプログラム形式でも取れるパターンの2つを書いておく。
参考例として、どちらも「自分自身がいるディレクトリ名の取得」として記述しておく。
ApplicationオブジェクトのExeName?から求める
AnsiString strPATH; strPATH = ExtractFilePath(Application->ExeName);
この方法は簡単だが、コマンドラインアプリ等の場合に正常に取得できないケースがある。
そんな時は、少々面倒ではあるが以下のようにして取得すると良い。
サブルーチン化しておくとそれなりに便利と思われる。
char cBUF[MAX_PATH]; AnsiString strPATH; ::GetModuleFileName(::GetModuleHandle(NULL), cBUF, MAX_PATH); strPATH = AnsiString(cBUF); strPATH = ExtractFilePath(strPATH);