用VC读取和分析格式化文本配置文件(4)
void CDataTxt::FormatTable()//规格化表格
{
int i=0;
char cc;
int nRow=0;
CString szLine="",szID="",szVal="",szCol="";
int nCol=0;
while(i<m_nTableLen)
{
cc=m_szTable[i];
if((cc==0x0A)||(cc==' ')) cc=0x20;
if(cc==0X0D)//处理一行
{
szLine.TrimLeft(); szLine.TrimRight();
if(!szLine.IsEmpty())
{
int nl=szLine.GetLength();
int j;
char c;
szID="";
for(j=0;j<nl;j++)//取szID
{
c=szLine[j];
if(c==0x20)
break;
szID+=c;
}
m_Table[nRow].nID=atoi(szID);
BOOL bStart;
bStart=FALSE;
szVal="";
while(j<nl)//取szCols
{
c=szLine[j];
if((bStart==FALSE)&&(c==0x20)) j++;
else{bStart=TRUE;szVal+=c;j++;}
}
szVal.TrimLeft();szVal.TrimRight();
nCol=0; nl=szVal.GetLength();
j=0;szCol="";
while(j<nl)
{
c=szVal[j];
if(c==',')
{
if(szCol.IsEmpty()) break;
else
{
if(nCol < TABLE_MAXCOL-1)
{
if(szCol.GetLength() <64)
sprintf(&(m_Table[nRow].s[nCol][0]),"%s",szCol);
nCol++; TRACE("szCol=%s
",szCol);
}
}
szCol="";
}
else szCol+=c;
j++;
}
if(!szCol.IsEmpty())
{
if(nCol < TABLE_MAXCOL-1)
{
if(szCol.GetLength() <64)
sprintf(m_Table[nRow].s[nCol],"%s",szCol);
nCol++; TRACE("szCol=%s
",szCol);
}
}
- 上一篇:经典编程:DLL地狱及其解决方案
- 下一篇:VC各类之间的调用函数总结