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

📄 fileloader.cpp

📁 这是我自己写的wince程序
💻 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 + -