📄 fileloader.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 + -