📄 fileloader.cpp
字号:
// FileLoader.cpp: implementation of the FileLoader class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "Creater.h"
#include "FileLoader.h"
//#include "fstream.h"
#include "inireader.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,pp,tmp;
CString info,ctmp;
CIniReader file(path);
if(file.Probe())
{
pathname.operator =(path);
file.Load();
m_filecotent = file.m_Buffer;
m_handle = file.m_handle;
TCHAR FUCK;
// swscanf(m_filecotent,L"%c",&FUCK);
// m_filecotent = m_filecotent.Right(m_filecotent.GetLength()-1);
swscanf(m_filecotent,L"%d",&n);
filepos = n;
info.operator =(m_filecotent.Right(m_filecotent.GetLength()-n));
for(i=0 ;m_filecotent[i] != '\n' ;i++ );
i++;
m_filecotent.operator =(m_filecotent.Mid(i,n-i));
swscanf(info,L"%d",&k);
for(p=0 ;info[p] != '\n' && p<info.GetLength();p++ );
p++;
m_charpternum = k;
first_mark = last_mark = -1;
tot_mark = 0;
for(i=0 ;i<1000 ;i++ )
mark[i][0] = mark[i][1] = -1;
for(int aa=0; aa<40; aa++)
{
m_chapterline[aa] = -1;
}
//读章节信息
for(i=0 ;i<k ;i++ )
{
// this->m_fucker[i] = new TCHAR(8);
swscanf(info.Right(info.GetLength()-p),L"%d",&m_chapterline[i]);
for(pp = p ;info[pp]!=' ' ;pp++ );
pp++;
for(;info[p] != '\n' && p<info.GetLength();p++ );
m_chapter[i].operator =(info.Mid(pp,p-pp));
// this->m_fucker[i] = str.GetBuffer(str.GetLength());
p++;
}
filepos+=p;
//读书签信息
swscanf(info.Right(info.GetLength()-p),L"%d",&k);
for( ;info[p]!='\n' ;p++ );
p++;
for(i=0 ;i<k ;i++ )
{
// this->m_fucker[i] = new TCHAR(8);
swscanf(info.Right(info.GetLength()-p),L"%d",&tmp);
for(pp = p ;info[pp]!=' ' ;pp++ );
pp++;
for(;info[p] != '\n' && p<info.GetLength();p++ );
ctmp.operator =(info.Mid(pp,p-pp));
SetBookmark(tmp,ctmp);
// this->m_fucker[i] = str.GetBuffer(str.GetLength());
p++;
}
}
/*& num[0].operator =("0");
num[1].operator =("1");
num[2].operator =("2");
num[3].operator =("3");
num[4].operator =("4");
num[5].operator =("5");
num[6].operator =("6");
num[7].operator =("7");
num[8].operator =("8");
num[9].operator =("9");*/
}
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;
}
void FileLoader::Set(int i, CString str)
{
ma[tot_mark] = i;
mn[tot_mark] = str;
tot_mark++;
}
bool FileLoader::ModifyInfo()
{
HANDLE fhandle;
int i;
CString tmp,content;
DWORD tt;
CString path;
path.Format(L"\\Windows\\WinCEReader\\WinCEReader\\%s", pathname);
// path = L"\\Windows\\WinCEReader\\WinCEReader\\fucksym.pbd";
fhandle = CreateFile((LPCTSTR)path,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
// fhandle = m_handle;
if(SetFilePointer(fhandle,(filepos)*2,0,FILE_BEGIN) != 0xFFFFFFFF)
{
content.operator =(itoa(tot_mark));
content.operator +=("\n");
for(i=0 ;i<tot_mark ;i++ )
{
content.operator +=(itoa(GetMarkLine(i)));
content.operator +=(" ");
content.operator +=(GetMarkName(i));
content.operator +=("\n");
}
DWORD dw = content.GetLength();
if(!WriteFile(fhandle,content,dw*2,&tt,NULL))
{
AfxMessageBox(L"save file failed!");
}
CloseHandle(fhandle);
}
else
{
AfxMessageBox(L"set point failed");
// return false;
}
return true;
}
CString FileLoader::itoa(int n)
{
/* int i,radix,t;
radix = 1;
i=1;
while(radix*10 < n+1 )
{
radix *= 10;
i++;
}
for( ;i>0 ;i-- )
{
result.operator +=(num[n/radix]);
n -= (n/radix)*radix;
}
*/
CString result;
result.Format(L"%d", n);
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -