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

📄 textfile.cpp

📁 BREW 应用
💻 CPP
字号:
// TEXTFILE.cpp: implementation of the CTEXTFILE class.
//
//////////////////////////////////////////////////////////////////////

#include "TEXTFILE.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTEXTFILE::CTEXTFILE(CAppMainHandler *pAppMain)
{
	m_pAppMain = pAppMain;	
	m_pIFile = NULL;	
}

CTEXTFILE::~CTEXTFILE()
{

}

int CTEXTFILE::Open(char* szFileName, int nReadSize)
{
	FileInfo fi;
	m_szFileName = szFileName;
	m_nReadSize = nReadSize;
	
	if(ISHELL_CreateInstance(m_pAppMain->m_pIShell, AEECLSID_FILEMGR,(void **)&m_pIFileMgr))
		return -1; //File 包府磊 积己坷幅
	
	if( IFILEMGR_Test(m_pIFileMgr, szFileName) == EFAILED )
		goto PROC_END;
	
	m_pIFile = IFILEMGR_OpenFile(m_pIFileMgr, szFileName, _OFM_READWRITE );

	if( m_pIFile ) {
		IFILE_GetInfo(m_pIFile, &fi);
		
		m_Fi.nFileSize = fi.dwSize;
		m_Fi.nFileSpare = m_Fi.nFileSize % m_nReadSize;
		m_Fi.nReadCount = m_Fi.nFileSize / m_nReadSize;
		m_Fi.nReadPos = m_Fi.nVWCount = 0;
	}
	return 0;
PROC_END:
	if (m_pIFile) 
		IFILE_Release(m_pIFile);
	else {
		IFILEMGR_Release(m_pIFileMgr);
		return -1;
	}
	IFILEMGR_Release(m_pIFileMgr);
	return 0;
}

void CTEXTFILE::Close()
{
	if( m_pIFile )
		IFILE_Release(m_pIFile);
	if( m_pIFileMgr )
		IFILEMGR_Release(m_pIFileMgr);
}

char* CTEXTFILE::First()
{	
	m_Fi.nReadPos=0;
	if( m_pIFile == NULL )
		return "";

	IFILE_Seek(m_pIFile, _SEEK_START, 0);//颇老 贸澜

	int nReadSize = m_nReadSize;	
	if( m_nReadSize > m_Fi.nFileSize )
		nReadSize = m_Fi.nFileSpare;

	char *pFileBuf;
	pFileBuf = new char[nReadSize];
	IFILE_Read(m_pIFile, pFileBuf, nReadSize);	

	CheckEnd(pFileBuf, nReadSize);
	return pFileBuf;
}

char* CTEXTFILE::Read(bool bEnd)
{
	if( m_pIFile == NULL )
		return "";

	int nReadSize = m_nReadSize;
	char chOne;
	IFILE_Seek(m_pIFile, _SEEK_START, m_nReadSize*m_Fi.nReadPos - 1);
	IFILE_Read(m_pIFile, &chOne, 1);

	if( bEnd )
		nReadSize = m_Fi.nFileSpare;
	char *pFileBuf;
	pFileBuf = new char[nReadSize+1];
	if( chOne & 0X80 ) {
		IFILE_Read(m_pIFile, pFileBuf+1, nReadSize);
		pFileBuf[0] = chOne;
		CheckEnd(pFileBuf, nReadSize+1);
	}
	else {
		IFILE_Read(m_pIFile, pFileBuf, nReadSize);
		pFileBuf[nReadSize] = '\0';
		CheckEnd(pFileBuf, nReadSize);
	}	
	return pFileBuf;
}

char* CTEXTFILE::Last()
{	
	m_Fi.nReadPos = m_Fi.nReadCount;
	return Read(true);
}

char* CTEXTFILE::Prev()
{
	m_Fi.nReadPos--;
	if( m_Fi.nReadPos < 0 )
		return First();
	else
		return Read();
}

char* CTEXTFILE::Next()
{
	m_Fi.nReadPos++;
	if( m_Fi.nReadCount > m_Fi.nReadPos )
		return Read();	
	else 
		return Last();	
}

bool CTEXTFILE::CheckEnd(char *szBuf, int nSize)
{
	if( (*szBuf + nSize-1) & 0X80 )//场 巩磊啊 2Bytes 巩磊老锭
	{
		szBuf[nSize-1] = '\0';
		return false;
	}	
	return true;
}

int CTEXTFILE::SaveToFile(char *szFileName, char* szNote, bool bClose)
{
	int nCount = 1024;
	if( !bClose )
		nCount = 1;

	if( Open(szFileName, nCount) > -1 ) {
		nCount = STRLEN(szNote);
		IFILE_Seek(m_pIFile, _SEEK_END, 0);
		IFILE_Write(m_pIFile, szNote, nCount);
		m_Fi.nFileSize += nCount;
		if( bClose )
			Close();
		return nCount;
	}
	return 0;
}

char CTEXTFILE::GetText(bool bNext)
{
	char chBuf;
	if( m_pIFile ) {
		(bNext) ? m_Fi.nVWCount++ : m_Fi.nVWCount--;
		if( m_Fi.nVWCount == 0 || m_Fi.nVWCount >= m_Fi.nFileSize )
			return '\0';
		IFILE_Seek(m_pIFile, _SEEK_START, m_Fi.nVWCount-1);
		IFILE_Read(m_pIFile, &chBuf, 1);
		return chBuf;
	}
	return '\0';
}

void CTEXTFILE::MoveIndex(int nIdx)
{
	m_Fi.nVWCount = m_Fi.nVWCount + nIdx;
}

int CTEXTFILE::Write(char *pText, int nSize)
{
	if( m_pIFile ) {
		IFILE_Seek(m_pIFile, _SEEK_END, 0);
		return IFILE_Write( m_pIFile, pText, nSize );
	}
	return 0;
}

⌨️ 快捷键说明

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