高手都请进,帮我看看代码,小弟看不懂,太深奥了,谢谢!
从dat文件里读取数据,插入到一个表格里,遇到\t就跳到下一列的表格,遇到\n就跳到下一行的表格.遇到\0读取结束.
下面是程序代码:
BOOL CGridCtrl::Load(LPCTSTR filename)
{
TCHAR *token, *end;
TCHAR buffer[1024];
CStdioFile File;
CFileException ex;
if (!File.Open(filename, CFile::modeRead | CFile::typeText))
{
ex.ReportError();
return FALSE;
}
DeleteAllItems();
TRY {
// Read Header off file
File.ReadString(buffer, 1024);
// Get first token
for (token=buffer, end=buffer;
*end && (*end != _T('\t')) && (*end != _T('\n')); end++);
if ((*end == _T('\0')) && (token == end))
token = NULL;
*end = _T('\0');
while (token)
{
InsertColumn(token);
// Get next token
for (token=++end; *end && (*end != _T('\t')) && (*end != _T('\n'));
end++);
if ((*end == _T('\0')) && (token == end)) token = NULL;
*end = _T('\0');
}
// Read in rest of data
int nItem = 0;
while (File.ReadString(buffer, 1024))
{
// Get first token
for (token=buffer, end=buffer;
*end && (*end != _T('\t')) && (*end != _T('\n')); end++);
if ((*end == _T('\0')) && (token == end)) token = NULL;
*end = _T('\0');
int nSubItem = 0;
while (token)
{
if (!nSubItem)
InsertRow(token);
else
SetItemText(nItem, nSubItem, token);
// Get next token
for (token=++end; *end && (*end != _T('\t')) && (*end != _T('\n'));
end++);
if ((*end == _T('\0')) && (token == end)) token = NULL;
*end = _T('\0');
nSubItem++;
}
nItem++;
}
AutoSizeColumns();
File.Close();
}
CATCH (CFileException, e) {
AfxMessageBox(_T("Unable to load grid data"));
e->Delete();
return FALSE;
}
END_CATCH
return TRUE;
}
谢谢!如过看懂了帮我加写注释1,非常感谢!!!
读取文件如:
FORWARD
1
64
2
1 10000 23.12
2 10000 21.32
2 10000 32.36
....
注:从FORWARD到2照程序里看好像是表头.控制插入列数,行数,但我就看不懂!高手快帮忙啊,不甚感激!