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

📄 fileloader.cpp

📁 智能阅读器       阅读器(运行于WINCE平台):阅读器满足一般现实中阅读书籍时的需求
💻 CPP
字号:
// FileLoader.cpp: implementation of the FileLoader class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Creater.h"
#include "FileLoader.h"
#include <fstream.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

FileLoader::FileLoader(CString path)
{
	int i,l,n,p,j,k;
	CFile file;
	char buf[1000];
	char *text,*tp;
	ifstream in(path);
	in.getline(buf,1000);
	sscanf(buf,"%d",&l);
	in.seekg(l);
	in.getline(buf,1000);
	sscanf(buf,"%d",&n);
	for(i=0 ;i<n ;i++ )
	{
		in.getline(buf,1000);
		sscanf(buf,"%d %s",&p,m_chapter);
	}
	in.close();
	if(file.Open(path,CFile::modeRead))
	{
		text = NULL;
		text = new char[l];
		if(text != NULL)
		{
			file.Read(text,l);
			tp = text;
			while(tp[0] != '\n')
			{
				tp++;
			}
			tp++;
			m_filecotent.operator = (tp);
			delete text;
			text = NULL;
			tot_mark = 0;
			first_mark = last_mark = -1;
			for(i=0 ;i<1000 ;i++ )
			{
				mark[i][0] = mark[i][1] = -1;
			}
		}
		else
		{
			::AfxMessageBox("申请内存失败。");
		}
	}
	else
	{
		::AfxMessageBox("打开文件失败。");
	}
}

FileLoader::~FileLoader()
{

}

bool FileLoader::SetBookmark(int line, CString name)
{
	int i,k;
	if(tot_mark == 999)
		return false;
	if(first_mark == -1)
	{
		first_mark = last_mark = 0;
		mark[0][0] = 0;
		mark[0][1] = 0;
		mark_line[last_mark] = line;
		mark_name[last_mark].operator =(name);
	}
	else
	{
		for(i=0 ;i<1000 ;i++ )
			if(mark[i][0] == -1)
				break;
		mark[i][0] = last_mark;
		mark[last_mark][1] = i;
		mark[i][1] = i;
		last_mark = i;
		mark_line[last_mark] = line;
		mark_name[last_mark].operator =(name);
	}
	tot_mark++;
	return true;
}

int FileLoader::GetMarkLine(int pos)
{
	int i,j;
	if(pos > tot_mark-1)
		return -1;
	i = first_mark;
	j = 0;
	while(1)
	{
		if(j == pos)
			return mark_line[i];
		j++;
		if(i == mark[i][1])
			return -2;
		i = mark[i][1];
	}
	return -2;
}

CString FileLoader::GetMarkName(int pos)
{	
	int i,j;
	if(pos > tot_mark-1)
		return "pos too larg";
	i = first_mark;
	j = 0;
	while(1)
	{
		if(j == pos)
			return mark_name[i];
		j++;
		if(i == mark[i][1])
			break;
		i = mark[i][1];
	}
	return "error";
}

int FileLoader::GetMarkCount()
{
	return tot_mark;
}



int FileLoader::DelMark(int pos)
{
	int i,j;
	if(pos > tot_mark-1)
		return -1;
	i = first_mark;
	j = 0;
	while(1)
	{
		if(j == pos)
		{
			if(mark[i][0] == i && mark[i][1] == i)
			{
				first_mark = last_mark = -1;
				mark[i][0] = mark[i][1] = -1;
				break;
			}
			if(mark[i][0] == i)
			{
				first_mark = mark[i][1];
				mark[i][0] = mark[i][1] = -1;
				break;
			}
			if(mark[i][1] == i)
			{
				last_mark = mark[i][0];
				mark[i][0] = mark[i][1] = -1;
				break;
			}
			mark[mark[i][0]][1] = mark[i][1];
			mark[mark[i][1]][0] = mark[i][0];
			mark[i][0] = mark[i][1] = -1;
			break;
		}
		j++;
		if(i == mark[i][1])
			break;
		i = mark[i][1];
	}
	tot_mark--;
	return 1;
}

⌨️ 快捷键说明

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