⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textfile.cpp

📁 管理项目进度工具的原代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					If filename is empty, the standard file 
					dialog will be displayed, and - if OK is 
					selected - filename will contain the 
					selected filename on return.
					
	Return :		BOOL					-	TRUE if OK. 
												GetErrorMessage 
												will return 
												errors
	Parameters :	CString& filename		-	file to write to
					CStringArray contents	-	contents to write

   ============================================================*/
{

	CStdioFileEx file;
	CFileException feError;
	BOOL result = TRUE;

	if( filename.IsEmpty() )
		result = GetFilename( TRUE, filename );

	if( result )
	{
		// Write the file
		if( file.Open( filename, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate, &feError ) ) 
		{

			file.SeekToEnd();

			int max = contents.GetSize();
			for( int t = 0 ; t < max ; t++ )
				file.WriteString( contents[ t ] + m_eol );

			file.Close();

		}
		else
		{

			// Set error message
			TCHAR	errBuff[256];
			feError.GetErrorMessage( errBuff, 256 );
			m_error = errBuff;
			result = FALSE;

		}
	}

	return result;

}

////////////////////////////////////////
// Window operations
//

BOOL CTextFile::Load( CString& filename, CEdit* edit )
/* ============================================================
	Function :		CTextFile::Load
	Description :	Loads a text file from filename to the 
					CEdit edit.
					If filename is empty, the standard file 
					dialog will be displayed, and - if OK is 
					selected - filename will contain the 
					selected filename on return.
					No translation of eols will be made.

	Return :		BOOL				-	FALSE if failure. 
											GetErrorMessage will 
											return the error.
	Parameters :	CString& filename	-	name of file to load
					CEdit* edit			-	pointer to CEdit to 
											set text to

   ============================================================*/
{
	BOOL result = FALSE;

	// Error checking
	if( ValidParam( edit ) )
	{
		CString contents;
		if( ReadTextFile( filename, contents ) )
		{

			edit->SetWindowText( contents );
			result = TRUE;

		}
	}

	return result;

}

BOOL CTextFile::Load( CString& filename, CListBox* list )
/* ============================================================
	Function :		CTextFile::Load
	Description :	Loads a text file from filename to the 
					CListBox list.
					If filename is empty, the standard file 
					dialog will be displayed, and - if OK is 
					selected - filename will contain the 
					selected filename on return.

	Return :		BOOL				-	FALSE if failure. 
											GetErrorMessage will 
											return the error.
	Parameters :	CString& filename	-	name of file to load
					CListBox* list		-	pointer to CListBox 
											to set text to

   ============================================================*/
{
	BOOL result = FALSE;

	// Error checking
	if( ValidParam( list ) )
	{

		// Read the file
		CStringArray contents;
		if( ReadTextFile( filename, contents ) )
		{

			// Set to listbox
			int max = contents.GetSize();
			for( int t = 0 ; t < max ; t++ )
				if( contents[ t ].GetLength() )
					list->AddString( contents[ t ] );
			result = TRUE;

		}

	}

	return result;

}

BOOL CTextFile::Save( CString& filename, CEdit* edit )
/* ============================================================
	Function :		CTextFile::Save
	Description :	Saves the contents of the CEdit edit to the 
					file filename. The file will be created or 
					overwritten.
					If filename is empty, the standard file 
					dialog will be displayed, and - if OK is 
					selected - filename will contain the 
					selected filename on return.
					Note that the eol-鯽rkers from the editbox
					will be used.

	Return :		BOOL				-	FALSE if failure. 
											GetErrorMessage will 
											return the error.
	Parameters :	CString& filename	-	name of file to save 
											to. Will be 
											overwritten
					CEdit* edit			-	pointer to CEdit to 
											get text from

   ============================================================*/
{
	BOOL result = FALSE;

	// Error checking
	if( ValidParam( edit ) )
	{

		// Get text
		CString contents;
		edit->GetWindowText( contents );

		// Write file
		if( WriteTextFile( filename, contents ) )
			result = TRUE;

	}

	return result;

}

BOOL CTextFile::Save( CString& filename, CListBox* list )
/* ============================================================
	Function :		CTextFile::Save
	Description :	Saves the contents of the CListBox list to 
					the file filename. The file will be created 
					or overwritten.
					If filename is empty, the standard file 
					dialog will be displayed, and - if OK is 
					selected - filename will contain the 
					selected filename on return.
					
	Return :		BOOL				-	FALSE if failure. 
											GetErrorMessage will 
											return the error.
	Parameters :	CString& filename	-	name of file to save 
											to. Will be 
											overwritten
					CListBox* list		-	pointer to CListBox 
											to get text from

   ============================================================*/
{
	BOOL result = FALSE;

	// Error checking
	if( ValidParam( list ) )
	{

		// Get listbox contents
		CStringArray contents;
		int max = list->GetCount();
		for( int t = 0; t < max ; t++ )
		{

			CString line;
			list->GetText( t, line );
			contents.Add( line );

		}

		// Write file
		if( WriteTextFile( filename, contents ) )
			result = TRUE;

	}

	return result;

}

////////////////////////////////////////
// Error handling
//

CString CTextFile::GetErrorMessage()
/* ============================================================
	Function :		CTextFile::GetErrorMessage
	Description :	Retrieves the error message. Should be 
					called after any of the file operations 
					returns FALSE and the file name is not 
					empty.

	Return :		CString	-	The current error string
	Parameters :	none

   ============================================================*/
{

	return m_error;

}

////////////////////////////////////////
// Private functions
//

void CTextFile::ClearError()
/* ============================================================
	Function :		CTextFile::ClearError
	Description :	Clears the internal error string. Should 
					be called first by all functions setting 
					the error message string.

	Return :		void
	Parameters :	none

   ============================================================*/
{

	m_error = _T( "" );

}

BOOL CTextFile::ValidParam( CWnd* wnd )
/* ============================================================
	Function :		CTextFile::ValidParam
	Description :	Used to check parameters of the Save/Load
					functions. The pointer to the window must 
					be valid and the window itself must exist.
					
	Return :		BOOL			-	FALSE if any parameter 
										was invalid
	Parameters :	CWnd* wnd		-	a window pointer, that 
										must be valid, to a 
										window

   ============================================================*/
{

	ClearError();
	BOOL result = TRUE;

	if( wnd == NULL )
	{

		ASSERT( FALSE );
		result = FALSE;

	}

	if( !IsWindow( wnd->m_hWnd ) )
	{

		ASSERT( FALSE );
		result = FALSE;

	}

	if( !result )
		m_error = _T( "Bad Window handle as parameter" );

	return result;

}

BOOL CTextFile::GetFilename( BOOL save, CString& filename )
/* ============================================================
	Function :		CTextFile::GetFilename
	Description :	The function will display a standard file 
					dialog. If the instance is created with an 
					extension, the extension will be used to 
					filter files.
					
	Return :		BOOL				-	TRUE if a file was 
											selected
	Parameters :	BOOL save			-	TRUE if the file 
											should be saved.
					CString& filename	-	Placeholder for the 
											selected filename

   ============================================================*/
{
	CString filter;
	CString extension = GetExtension();
	if( extension.GetLength() )
		filter = extension + _T( "-files (*." + extension + ")|*." ) + extension + _T( "|All Files (*.*)|*.*||" );

	BOOL result = FALSE;
	CFileDialog dlg( !save, extension, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filter );

	if( dlg.DoModal() == IDOK )
	{
		filename = dlg.GetPathName();
		result = TRUE;
	}

	return result;

}

CString CTextFile::GetExtension()
/* ============================================================
	Function :		CTextFile::GetExtension
	Description :	An accessor for the m_extension field.
					
	Return :		CString	-	the extension.
	Parameters :	none

   ============================================================*/
{

	return m_extension;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -