用VC读取和分析格式化文本配置文件(3)
void CDataTxt::DelNote()//去掉注释,分成定义段和表格段
{
CString szt="";
char cc,ccp=0;
int i;
for(i=0;i<m_nDataSize;i++)
{
cc=m_cbuf[i];
if(cc != '/'){ szt+=cc;ccp=cc; }
else//cc=='/'
{
if(i<m_nDataSize)
{
if(m_cbuf[i+1]=='/')//注释开始
{
while((i<m_nDataSize)&&(m_cbuf[i]!=0x0d)) i++;
if(m_cbuf[i]==0x0d) i--;
ccp=0;
}
else{szt+=cc; ccp=cc; }
}
}
}
m_nDataSize=szt.GetLength();
sprintf(m_cbuf,"%s",szt);
int ns=szt.Find("#DEFINE_BEGIN",0);
int ne=szt.Find("#DEFINE_END",0);
if((ns==-1)||(ne==-1)) return;
ns+=13;
m_szDefine="";
for(i=ns;i<ne;i++) m_szDefine+=szt[i];
m_nDefineLen=m_szDefine.GetLength();
ns=szt.Find("#TABLE_BEGIN",0);
ne=szt.Find("#TABLE_END",0);
ns+=12;
if((ns==-1)||(ne==-1)) return;
m_szTable="";
for(i=ns;i<ne;i++) m_szTable+=szt[i];
m_nTableLen=m_szTable.GetLength();
FormatTable();//规格化表格
}
BOOL CDataTxt::GetDefine(LPCTSTR lpszName,CString &szVal)//获取定义
{
CString szName=lpszName;
if(szName.IsEmpty()) return FALSE;
int nLen=szName.GetLength();
int ns=m_szDefine.Find(lpszName,0);
if(ns==-1) return FALSE;
szVal="";
int i=ns+nLen;
BOOL bStartCopy=FALSE;
char cc;
while(i<m_nDefineLen)
{
cc=m_szDefine[i];
if((cc!=0x0D)&&(cc!=0x0A)&&(cc!=' ')&&(cc!=0x20))
{
if(bStartCopy==FALSE) bStartCopy=TRUE;
szVal+=m_szDefine[i];
}
else{if(bStartCopy) break;} i++;
}
return TRUE;
}
- 上一篇:经典编程:DLL地狱及其解决方案
- 下一篇:VC各类之间的调用函数总结