📄 configfilereader.cpp
字号:
// ConfigFileReader.cpp: implementation of the CConfigFileReader class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "VideoTest2.h"
#include "ConfigFileReader.h"
#include "Afxcoll.h"
#include "BaseConfigFile.h"
#include "RuleConfigFile.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CConfigFileReader::CConfigFileReader()
{
}
CConfigFileReader::CConfigFileReader(CString basePath)
{
m_basePath = basePath;
}
CConfigFileReader::~CConfigFileReader()
{
}
//Read all the data in the file into a CString,if can not read the file,return a empty CString
CString CConfigFileReader::ReadFileToString(CString fullPathFileName){
CFile file;
PBYTE pFileBuf;
CString szBuf;
DWORD dwLength;
szBuf.Empty();
if(!file.Open((LPCTSTR )fullPathFileName,CFile::modeRead)){
// MessageBox(TEXT("config file does not exsit"),TEXT("warnning"),MB_OK);
return szBuf;
}
dwLength = file.GetLength();
if (dwLength == 0) { return szBuf;}
pFileBuf = new BYTE[dwLength + 2];
if (pFileBuf == NULL) { return szBuf;}
memset(pFileBuf, 0x0, dwLength + 2);
file.Read((void *)pFileBuf, dwLength);
file.Close();
if (pFileBuf[0] == 0xFF && pFileBuf[1] == 0xFE) {szBuf = (LPCWSTR)(pFileBuf + 2);}
else
{
PTCHAR pszWideChar = new TCHAR[dwLength + 1];
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pFileBuf, dwLength, pszWideChar, dwLength);
szBuf = pszWideChar;
delete pszWideChar;
}
delete pFileBuf;
return szBuf;
}
// Return a list of CbaseConFile objects
CObList * CConfigFileReader::ReadBaseConfigfile(CString fname)
{
CString fullFilePath = m_basePath+fname;
CObList * list = new CObList();
CString szBuf = ReadFileToString(fullFilePath);
// Parse the String
bool firstLine = true;
CString Count;
while (1)
{
CString szTemp;
int npos;
if (szBuf.IsEmpty()) break;
npos = szBuf.FindOneOf(TEXT("\r\n"));
if (npos == -1)
{
szTemp = szBuf;
szBuf.Empty();
}
else
{
szTemp = szBuf.Left(npos);
szBuf = szBuf.Right(szBuf.GetLength() - npos-1);
szBuf.TrimLeft(TEXT("\r\n"));
}
szTemp.TrimLeft(TEXT("\t "));
szTemp.TrimRight(TEXT("\t "));
if(szTemp.IsEmpty()){
continue;
}
if(firstLine){// parse the fist line
npos = szTemp.FindOneOf(TEXT(":"));
Count = szTemp.Right(szTemp.GetLength() - npos-1);
firstLine = false;
}else{
CString SeqNO;
CString partition;
CString fname;
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
SeqNO = szTemp.Left(npos);
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
partition = szTemp.Left(npos);
partition.TrimLeft(TEXT("\""));
partition.TrimRight(TEXT("\""));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
fname = szTemp.Left(npos);
fname.TrimLeft(TEXT("\""));
fname.TrimRight(TEXT("\""));
// szTemp = szTemp.Right(szTemp.GetLength() - nPos);
CBaseConfigFile *confile = new CBaseConfigFile(SeqNO,partition,fname);
list->AddTail(confile);
}
}
return list;
}
//Read Rule config file
CObList * CConfigFileReader::ReadRuleConfigfile(CString fname)
{
CString fullFilePath = m_basePath+fname;
CObList * list = new CObList();
CString szBuf = ReadFileToString(fullFilePath);
// Parse the String
bool firstLine = true;
CString Count;
while (1)
{
CString szTemp;
int npos;
if (szBuf.IsEmpty()) break;
npos = szBuf.FindOneOf(TEXT("\r\n"));
if (npos == -1)
{
szTemp = szBuf;
szBuf.Empty();
}
else
{
szTemp = szBuf.Left(npos);
szBuf = szBuf.Right(szBuf.GetLength() - npos-1);
szBuf.TrimLeft(TEXT("\r\n"));
}
szTemp.TrimLeft(TEXT("\t "));
szTemp.TrimRight(TEXT("\t "));
if(szTemp.IsEmpty()){
continue;
}
/**
Playbill number is:<播放规则数>
<节目序号> <点播?> <播放时间> <选择方式> <节目数量> <禁止播放数量>
<分区> <播放列表文件> [<指定节目序号>] [<禁止播放节目序号>] [<注释>]
*/
if(firstLine){// parse the fist line
npos = szTemp.FindOneOf(TEXT(":"));
Count = szTemp.Right(szTemp.GetLength() - npos-1);
firstLine = false;
}else{
CString seqNO;
CString partition;
CString fname;
int isOrder;//<点播?>指此节目是否是点播节目
int playTime; //<播放时间>
int playStyle;// <选择方式> 0 顺序播放, 1指定播放, >1循环播放(循环天数加1)
int programCNT;//<节目数量>
int banProgramCNT;
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
seqNO = szTemp.Left(npos);
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//<点播?>
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
isOrder = _wtoi(szTemp.Left(npos));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//<播放时间>
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
playTime = _wtoi(szTemp.Left(npos));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//<选择方式>
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
playStyle = _wtoi(szTemp.Left(npos));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//节目数量
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
programCNT = _wtoi(szTemp.Left(npos));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//禁止播放数量
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
banProgramCNT = _wtoi(szTemp.Left(npos));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//分区
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
partition = szTemp.Left(npos);
partition.TrimLeft(TEXT("\" "));
partition.TrimRight(TEXT("\" "));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
//播放列表文件
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) continue;
fname = szTemp.Left(npos);
fname.TrimLeft(TEXT("\" "));
fname.TrimRight(TEXT("\" "));
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
CRuleConfigFile *confile = new CRuleConfigFile(seqNO,partition,fname);
confile->setIsOrder(isOrder);
confile->setPlayTime(playTime);
confile->setProgramCNT(programCNT);
confile->setBanProgramCNT(banProgramCNT);
confile->setPlayStyle(playStyle);
// confile->setp
// confile->s
//指定节目序号列表
while(programCNT>0){
CString oseqNO;
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) break;
oseqNO = szTemp.Left(npos);
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
programCNT--;
confile->addProgramCNTList(oseqNO);
}
//禁止播放节目序号列表
while(banProgramCNT>0){
CString bseqNO;
npos = szTemp.FindOneOf(TEXT(","));
if(npos ==-1) break;
bseqNO = szTemp.Left(npos);
szTemp = szTemp.Right(szTemp.GetLength() - npos-1);
banProgramCNT--;
confile->addBanProgramCNTList(bseqNO);
}
list->AddTail(confile);
}
}
return list;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -