我用CFile读档, 但发现有一个问题:
以下是source code:
CStdioFile f; //读第一个档
if (!f.Open(_T("MapData.ini"),CFile::modeRead)){
AfxMessageBox(_T("Fail to open a file!"));
}
CString str;
f.ReadString(str);
f.Close();CStdioFile f2;  //读第二个档
if (!f2.Open(str,CFile::modeRead)){
AfxMessageBox(_T("Fail to open a file!"));
}读第一个档是正常的, 但读第二个档时, 它说读不到文件.
我用debugger去看, 发现 str 里的值是正确的, 而文件的路径都是正确的, 但不明它为何读不到文件.
之后我试过用CFile, 但结果一样.
之后我再试过如果将str里的值直接写到程序里, 它是可以正常读档的.
我想问问大家知怎样才可以用以上的方法读档.(不是直接将路径写到程序里).

解决方案 »

  1.   

    第一次加上 CFile::shareDenyNone
      

  2.   

    CStdioFile f; //读第一个档 
    CString str; 
    if (!f.Open(_T("MapData.ini"),CFile::modeRead)){ 
    AfxMessageBox(_T("Fail to open a file!")); 

    else f.ReadString(str); 
    f.Close(); str.Empty();CStdioFile f2;  //读第二个档 
    if (!f2.Open(str,CFile::modeRead)){ 
    AfxMessageBox(_T("Fail to open a file!")); 

    else f2.ReadString(str); 
    f2.Close(); if,else尽可能成对用.否则顺序执行容易出错
    str要清空--我不知道你是什么文档,我那么用的时候是可以在调试的时候看见乱码的
    再试试
      

  3.   


    如果str.Empty();, 那么怎样call f2.Open(str,CFile::modeRead)?f2的文件是Rshanghai.MIF. 里面的全是英数字 CFile::shareDenyNone  是允许其他进程写, 但我是读档, 不是写档
      

  4.   

    路径是絶对没有问题, 这个我可以保证其实我的问题是我想读一个档,但个档的路径在另一个档里, 但当读完第一个档, 取得了路径, 再用该路径读档时出问题.
    取得的路径, 我用debugger看过是没有问题的, 但不知为何读不了第二个档
      

  5.   

    用DEBUG看可能有些不能显示的字符,最好看看该字符串的真实内容,是否有相对路径问题。
      

  6.   


    不用debugger看可以怎样看字符串的真实内容?
    因为我刚开始用mfc, 所不太懂怎样用, 它又不能用cout 等的standard output print 出来看,,那么要怎样先看到?
      

  7.   

    问题解决了, 原来字多了一个空格, 但debugger 看唔到>,<