hur.cn - 华软网

 热门搜索

如何将Listctrl中多个记录保存到txt文件中

  作者:未知    来源:网络    更新时间:2011/5/20
不是listctrl中的全部记录,只是其中的几条。而且保存之后再进行保存时不重写,而是续写……
不知道怎么做,本人是一只菜菜鸟,麻烦各位高手说详细点哈,谢谢啦!
---华软 网友回答---
C++">CListCtrl::GetItemText();
...
try
{
 CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeReadWrite);
 file.SeekToEnd();
 file.Write(...);
 file.Close();
}
catch(CFileException* e)
{
 e->ReportError();
 e->Delete();
}

---华软网友回复---
额……能不能再具体点呢……我是很菜很菜的菜鸟……还是不怎么明白……
自己顶,别沉了……
---华软网友回复---
C++">CListCtrl m_ctrlList;
int count = 0;
CString strListContext;
count = m_ctrlList.GetItemCount();
for(int i = 0; i < count; i++)
{
strListContext += m_ctrlList.GetItemText(i,0);
strListContext += ", ";
}
try
{
 CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeReadWrite);
 file.SeekToEnd();
 file.Write(...);
 file.Close();
}
catch(CFileException* e)
{
 e->ReportError();
 e->Delete();
}

其实上面那位大哥已经写的很清楚了,
---华软网友回复---
C++">CListCtrl m_ctrlList;
int count = 0;
CString strListContext;
count = m_ctrlList.GetItemCount();
for(int i = 0; i < count; i++)
{
strListContext += m_ctrlList.GetItemText(i,0);
strListContext += ", ";
}
try
{
 CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeReadWrite);
 file.SeekToEnd();
 file.Write(strListContext,strListContext.GetLength());
 file.Close();
}
catch(CFileException* e)
{
 e->ReportError();
 e->Delete();
}

---华软网友回复---
count = m_ctrlList.GetItemCount();

还是把所有的记录给保存了啊……我想只保存其中的几个……
---华软网友回复---
还是没有解决……跪求围观!!!!
---华软网友回复---
五星大叔的代码已经写的很详细了,就是每次保存你的后面添加的数据,他这是支持续写功能的。
LZ的意思是不是说我保存了这次的几行数据了,但是把上次的给覆盖掉?
---华软网友回复---
对啊对啊,想续写的意思没表达清楚,不好意思……
---华软网友回复---
我想要保留上次写的,在添加新写入的……就是这个意思……
---华软网友回复---
纠结……坐等……别沉了……
---华软网友回复---
你就对想保留的几个ID号进行判断不就行了?
引用 5 楼 roxxany 的回复:
count = m_ctrlList.GetItemCount();

还是把所有的记录给保存了啊……我想只保存其中的几个……

---华软网友回复---
先谢谢了~那个问题已经解决了~
现在的问题是,我每次保存时都会把上次保存的数据给覆盖了……
---华软网友回复---
 如果不覆盖,
将这句中CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeReadWrite);

的CFile::modeCreate | 去掉。然后加一个file.SeekToEnd();

modeCreate的模式,会将已存在的文件覆盖掉。

---华软网友回复---
引用 13 楼 wuweiyin 的回复:
如果不覆盖,
将这句中CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeReadWrite);

的CFile::modeCreate | 去掉。然后加一个file.SeekToEnd();

modeCreate的模式,会将已存在的文件覆盖掉。

删除后确实不被覆盖了,但是又有了个新问题,如果没建此文件这么改完后就没法创建指定的txt文件了……
---华软网友回复---
引用楼主 roxxany 的回复:
不是listctrl中的全部记录,只是其中的几条。而且保存之后再进行保存时不重写,而是续写……
不知道怎么做,本人是一只菜菜鸟,麻烦各位高手说详细点哈,谢谢啦!

建议这样处理:
选中一行,保存一行。
为了不重写,保存过的那一行,需要自己做一个特殊的标记。
下次再保存的时候,标记过的行就不保存。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。