之前我用读写文件的方式读取和储存一些外部数据,没有问题!大概情况如下:
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的过程屏蔽,或者创建后点取消对原来的读写过程都没有影响!请问各位大侠是什么问题?
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的过程屏蔽,或者创建后点取消对原来的读写过程都没有影响!请问各位大侠是什么问题?
try
catch问题自然清楚了
CFileDialog会改变当前文件路径,如果tempString是相对路径,则文件的路径已经不对了
请问怎么解决,用绝对路径?~
问题已经解决,开始的时候要存一个相对路径到全局。
一直以来都以为相对路径是指运行程序的路径!现在明白在文件对话框选择文件的时候会改变这种路径!谢谢!
2、如果文件放在exe同级目录下,则可以用GetModuleFileName获得路径