2005を使っています。
iniファイルは推奨されていないとのことですが、事情によりiniファイル
を使うことになりました。
そこで、以下のようなプログラムを作ったのですが、
どうもiniファイルに保存されません。
CWinApp* pApp = AfxGetApp();
CString path;
int rev;
if( pApp->m_pszProfileName ){
free( ( void* )pApp->m_pszProfileName );
::GetModuleFileName( NULL, path.GetBuffer( 512 ), 512-1 );
path.ReleaseBuffer();
rev = path.ReverseFind('\\');
path.Delete( rev + 1, path.GetLength() - rev - 1 );
path = path + test.ini;
pApp->m_pszProfileName = _tcsdup( path );
}
pApp->WriteProfileInt(TEXT(SECTION),TEXT(TESTKEY),50);
何が原因なのかわからないのですが・・・。
(どのサイトを見ても、何も気にせず保存できるような事が書いてありますし・・)
iniファイルを作成するタイミング(今はInitInstance()でやってます)や
設定する何かがあるのでしょうか?
基本、レジストリに保存するということですが、上記作業を行うことで
iniファイルとしてディレクトリに保存されるわけですよね??
とりあえず、OSの種別も書いておきましょう。
(Windows Vistaの場合特殊なので)
http://www.hiramine.com/programming/windows/inifilewriteget.html
を元に書き直したらどうなりますか?
(パスの処理は専用の関数に任せるべき)
Blueさん
ありがとうございます。
提示していただいたHPを読んで即解決しました。
SetRegistryKey()
↑これをコメントアウトしていませんでした。
私が探したHPにも記述しているところはありましたが、
私の発想が貧弱なため、そのままとしていました。
この関数より下でiniファイルの書込みテストをしていましたので
思うように動作していなかったようです。
SetRegistryKey()をコメントアウトすることで問題なく保存するように
なりました。
これでもちゃんと調べていたのですが、読解力がないというか・・・
恥ずかしい限りです。
それと、OSの種別、また質問することがありましたら記述します。
(今回はXPでした。)
どうもありがとうございました。