パスからファイル名を取得する / INIファイルの保存ディレクトリを取得する

投稿日: 2004年10月01日 更新日: 2017年07月22日

パスからファイル名を取得する

MFCの場合、適当にやるとこんな感じ

filename = path.Mid( path.ReverseFind( '\\' ) + 1 );

もっと正確にやる場合は_splitpath(or _tsplitpath)を使う。

INIファイルの保存ディレクトリを取得する

アプリケーションと同じディレクトリにiniファイルを作成したい場合、GetCurrentDirectory()を使うとカレントディレクトリが変更されたときにまずいことになってしまう。ので、実行中のアプリケーションと同じディレクトリを取得して、そこにINIファイルを作成したい。

実行されている自分のプログラムのフルパス名を取得する

を参考に作ってみたのが下のコード

CString appdir;


//splitpath用
TCHAR drive[ _MAX_DRIVE ];
TCHAR dir[ _MAX_DIR ];
TCHAR filename[ _MAX_FNAME ];
TCHAR ext[ _MAX_EXT ];
TCHAR path[ MAX_PATH ];

// 実行中のプロセスのフルパス名を取得する
::GetModuleFileName(NULL, path, sizeof path / sizeof path[0] );

// フルパス名を分割する
_tsplitpath( path, drive, dir, filename, ext ); 


// アプリケーションディレクトリ文字列を作成
_tmakepath( appdir.GetBuffer( MAX_PATH ), drive, dir, "", "" );
appdir.ReleaseBuffer();


return appdir;

GetModuleFileName()の使い方を探していたときに見つけたページ

http://hp.vector.co.jp/authors/VA000092/win32/misc.html

正確なコードで参考になる。

http://www14.plala.or.jp/TMatTMnet/programming/tips.htm

明日から使えるTipsが現在12個。

  1. ファイル選択ダイアログ(複数選択)を表示
  2. フォルダ選択ダイアログを表示
  3. Esc、Enterキーで閉じなくするには
  4. 実行ファイル(自分自身)のフルパス取得
  5. ファイル・フォルダ検索関数
  6. ゴミ箱へ削除する関数
  7. ボタンを有効・無効にする
  8. ポップアップメニューを表示する
  9. UTF-8からShift_JISに変換する関数 1.ファイルのプロパティダイアログを表示 1.特定のアプリケーションが起動中かどうか調べる関数 1.ファイルサイズ数値を変換する関数

追記: http://home.att.ne.jp/banana/akatsuki/doc/mfc/mfc04/にほぼ同じコードが載ってた。

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ