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

📄 configfilereader.cpp

📁 演示wince 下如何使用mediaplay 控件播放媒体文件. 程序中还演示了如何解析文本文件
💻 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 + -