我有一个VC++应用程序,在我的应用程序中,我有一些基本的文件操作。
以下是默认代码
CStdioFile cFile;
CFileException e;
CString sReport;
CString sHtmlfile = "testreport.html"
OutputDebugString((sHtmlfile));
if (!cFile.Open(sHtmlfile,CFile::modeCreate | CFile::modeWrite, &e ))
{
}问题是我的应用程序每隔几分钟就执行一次这段代码。它工作得很好。
在多次运行代码之后,cFile.Open()函数失败。我尝试获取错误消息
TCHAR szError[1024];
e.GetErrorMessage(szError,1024);
OutputDebugString((szError));具有讽刺意味的是,szError错误消息是“没有发生错误”。
当我重新启动我的应用程序时,这又会起作用。知道为什么会发生这种情况吗。
提前谢谢。
发布于 2010-03-29 16:33:15
您是否有多个实例在运行?我建议您在出现错误时使用Process Explorer,以查看是否存在上述文件的任何其他句柄。
GetLastError会上报上一个API函数上报的错误。如果在失败的API调用和对GetLastError的调用之间有任何其他API调用,那么最后一个错误值将被覆盖。(正如@sbi已经在评论中指出的那样。)
发布于 2010-03-24 17:31:04
如果你忘记关闭你的文件,它就会从文件描述符中出来。当你退出你的应用程序时,它们都会关闭,然后你可以再次运行它。检查您的文件是否已关闭。
好的。如果不是上面的情况,那会是什么呢?您从cFile.Open得到了错误消息,因此我们可以相信它是准确的。
我不确定如果当前进程已经打开了另一个同名文件,或者您试图打开一个名称陌生的文件,比如空字符串,会发生什么情况。要解决这些问题,您还可以打印出打开时出现错误的文件的名称(还可以跟踪未发生错误的情况)。
发布于 2010-03-30 02:43:27
您正在使用C++。您的错误可能完全在其他地方。我有一个指针错误,导致干净的代码吐出一个错误。
你有没有尝试过在发布模式下构建?
我建议尝试一步一步地检查,也许可以缩小出现错误的范围。
https://stackoverflow.com/questions/2506485
复制相似问题