//函数功能:
// 打开文件
//函数输入:
// char* pFileName
// 文件名称
// CFile *pFile
// 文件句柄
// int FileType
// 0 源文件,只读文件
// 1 目标文件,创建并可写
//函数返回:
// 0 成功
// 1 指针为空
// 2 文件操作异常
// 3 文件打开失败
int OpenFileEx(char* pFileName, CFile *pFile, int FileType)
{
BOOL bRet = 0;
CFileException e;
if ((pFileName == NULL) || (pFile == NULL))
{
return(1);
}
else
{
try
{
if (FileType == 0)
{
bRet = pFile->Open(pFileName, CFile::modeRead | CFile::typeBinary, &e);
}
else
{
bRet = pFile->Open(pFileName, CFile::modeCreate | CFile::modeWrite, &e);
}
if (bRet == TRUE)
{
return(0);
}
else
{
return(3);
}
}
catch (CFileException e)
{
return(2);
}
}
}
错误信息:
error C2316: “CFileException”: 无法作为析构函数捕获,或者复制构造函数不可访问或已删除,或同时出现这两种情况
解决方案 »
- PostNcDestroy中释放非模式对话框//调试就报释放错误;执行无错。。。。
- 牛人帮解决vc下编译出错C2057 C2466,谢谢
- 没有合适的默认构造函数可用,这个错误是怎么造成的?
- CPtrArray具体怎么用
- vc++安装问题 急!!!!!!!!!!在线等
- ASC码->BYTE?转换
- 请问:怎么导入一个别人的类?
- 一个关于IBM POS机的问题!在线等待。
- vc.net中用的是ado.net还是ado?
- 可以指定HTMLView浏览一个字符串的内容吗?不用写成一个文件然后Navigate2它。
- 【急急急!!!】四个点坐标求两直线夹角 (用java写出来)
- 如何让另外一个线程停止Sleep,并立即执行后面的代码?
有人知道这是为什么吗?
void AFXAPI AfxThrowFileException(int cause, LONG lOsError,
LPCTSTR lpszFileName /* == NULL */)
{
#ifdef _DEBUG
LPCSTR lpsz;
if (cause >= 0 && cause < _countof(rgszCFileExceptionCause))
lpsz = rgszCFileExceptionCause[cause];
else
lpsz = szUnknown;
TRACE3("CFile exception: %hs, File %s, OS error information = %ld.\n",
lpsz, (lpszFileName == NULL) ? _T("Unknown") : lpszFileName, lOsError);
#endif
THROW(new CFileException(cause, lOsError, lpszFileName));
}
另外 catch 中 还要对应的 Deletetry
{
// Do something to throw a file exception.
}
catch( CFileException* theException )
{
if( theException->m_cause == CFileException::fileNotFound )
TRACE( "File not found\n" );
theException->Delete();
}