之前我用读写文件的方式读取和储存一些外部数据,没有问题!大概情况如下:
file.Open(tempString,CFile::modeRead|CFile::typeText);
file.ReadString(tempString1);
file.WriteString(dlgmapcenter.m_editLonDegree+"\n");但当我我在多文档的MailFRM中的一个菜单响应函数创建CFileDialog对话框后
CFileDialog  dlg (TRUE, ".udf", NULL, OFN_FILEMUSTEXIST   |   OFN_READONLY   |   OFN_PATHMUSTEXIST,
"Update Database(*.udf)|*.udf|",
this);
if (dlg.DoModal() == IDOK) return;
······以下略。(调试的时候都屏蔽了)
发现在这个文件对话框创建打开并选择相应文件确定后,原先的读写文件就有问题了,会出现
File:fgets.c
Line:60
expression: str! = NULL
开始以为是读的时候有问题,屏蔽读文件操作后写文件也有问题,在执行红色的语句(ReadString或WriteString)是出错!
不知道是什么原因!我将创建CFileDialog的过程屏蔽,或者创建后点取消对原来的读写过程都没有影响!请问各位大侠是什么问题?

解决方案 »

  1.   

    缺乏文件操作的基本只是文件操作和数据库操作一样,一定要检查异常!加上
    try
    catch问题自然清楚了
      

  2.   

    Open以后得判断是否打开文件正确。
    CFileDialog会改变当前文件路径,如果tempString是相对路径,则文件的路径已经不对了
      

  3.   

    CFileDialog会改变当前文件路径,如果tempString是相对路径,则文件的路径已经不对了好像是这么个概念,相对路径发生了变化,但是每次我都是重新找相对路径的呀!这时的相对路径是以打开文件的路径为基准的!?
    请问怎么解决,用绝对路径?~
      

  4.   

    to:ouyh12345 
    问题已经解决,开始的时候要存一个相对路径到全局。
    一直以来都以为相对路径是指运行程序的路径!现在明白在文件对话框选择文件的时候会改变这种路径!谢谢!
      

  5.   

    1、用绝对路径
    2、如果文件放在exe同级目录下,则可以用GetModuleFileName获得路径