一个配置文件,para.ini,文件内容:
[ACCESS]
db=
---------------------------------------------------------------------
程序:首先打开文件框选择文件将路径全名放到CString mdb_file;
CFileDialog Open(true,"","",0,"Access(*.mdb)|*.mdb|",this);
if(Open.DoModal()==IDOK)
{
mdb_file=Open.GetPathName();
SetDlgItemText(IDC_EDIT_MDB,mdb_file);
}
然后在另一个函数中:
WritePrivateProfileString("ACCESS","db",mdb_file,".\\para.ini")
mdb_file变量不是在函数中定义而是定义在类中。
执行完这条语句,但配置文件中的db=后面仍然是空的,,
请问这是为什么啊????

解决方案 »

  1.   


    mdb_file 可能就是空的。
    写之前先检查一下它的值。
      

  2.   

    我有检查这个变量
    mdb_file.isempty(),, 为非空,,在调试时可以看到变量值
      

  3.   

    mdb_file 的内容是可见的字符么?你把
    WritePrivateProfileString("ACCESS","db",mdb_file,".\\para.ini")
    改成
    WritePrivateProfileString("ACCESS","db", "abc",".\\para.ini")
    看看,是不是写景去了。
      

  4.   

    看看HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping下有没有你的文件名和相关内容!!
      

  5.   

    to:BinaryTreeEx(狂徒(完全抵制日货)) 
    按照你的方法,可以将abc写到配置文件中在注册表中没有看到我的那个文件名和相关内容
      

  6.   

    mdb_file变量的值就是文件名的绝对路径。。
    d:\abc.mdb
      

  7.   

    WritePrivateProfileString("ACCESS","db",LPCTSTR(mdb_file),".\\para.ini")
      

  8.   

    问题是你使用的是相对路径
    这个真的不是很好
    如果线程当前到了某个目录,比如访问文件mfc42.dll,那么相对路径就到c:\winnt哪里去了
    所以你直接写“abc”进去可以,调用UpdateData(TRUE)跑到另外一个目录了,就写不进去了
    实际也是写了文件的,只不过文件写的路径不对不信你在系统盘查找一下"para.ini",相信会有所发现
    自己的配置文件我基本上是不用相对路径去读写的
      

  9.   

    我一般是
    BOOL CMYApp::InitInstance()
    {
        GetCurrentDirectory(MAX_PATH, g_szWorkPath);
    }
    然后构造配置文件路径