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=='\t')) 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\n",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\n",szCol);
}
}
if(nCol>0)
nRow++;
if(m_nRows >=TABLE_MAXROW)
{
m_nRows=nRow;
return;
}
szLine="";
}
}
else szLine+=cc;
i++;
}
m_nRows=nRow;
}
void test()
{
CDataTxt dt;
dt.m_szPath="c:\\sqtl.txt";
dt.Read();
CString szVal,szMsg;
if(dt.GetDefine("@COM_PORT",szVal)){TRACE("@COM_PORT=%s\n",szVal);}
if(dt.GetDefine("@COM_BAUDRATE",szVal)){TRACE("@COM_BAUDRATE=%s\n",szVal);}
int i;
for(i=0;i<dt.m_nRows;i++)
{
TRACE("Row=%d,ID=%d,s[0]=%s,sz[1]=%s,s[2]=%s,s[3]=%s\n",
i,
dt.m_Table[i].nID,
&(dt.m_Table[i].s[0][0]),
&(dt.m_Table[i].s[1][0]),
&(dt.m_Table[i].s[2][0]),
&(dt.m_Table[i].s[3][0]));
}
}