新手提问:如何把指定文件的内容读到ListCtrl中?? 在线等!!!

talkingmute 2005-09-23 09:18:04
当前文件的内容为:
1|0|0-3312|0-65135
2|0|33-3232|43-311

想读到一个ListCtrl中,"|"为分割符,即ListCtrl中第一行依次为1,0,0-3312,0-65135
第二行依次为2,0,33-3232,43-311。

感谢大家,本人初次学习vc,想通过这个例子熟悉下cfile和listctrl的相关操作!
希望大家能帮助!!
...全文
171 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
talkingmute 2005-09-28
  • 打赏
  • 举报
回复
请问该如何删除文件中的一部分内容呢?
比如第i个文件指针后面j个长度的内容?
talkingmute 2005-09-28
  • 打赏
  • 举报
回复
请问该如何删除文件中的一部分内容呢?
比如第i个文件指针后面j个长度的内容?
smartcwj 2005-09-24
  • 打赏
  • 举报
回复
该结贴了,这个楼主要厚道
快乐鹦鹉 2005-09-23
  • 打赏
  • 举报
回复
哦。不好意思。我掉了一句话,在while的最后,要调用bRead = file.ReadString(sLine);
while结束后,用file.Close();关闭文件。

列表控件增加列
m_ListCtrl.InsertColumn(0,"1");
m_ListCtrl.InsertColumn(1,"2");
m_ListCtrl.InsertColumn(2,"3");
m_ListCtrl.InsertColumn(3,"4");
用CStdioFile逐行读取
CStdioFile file;
file.Open("***");
CString sLine;
BOOL bRead = file.ReadString(sLine);
while(bRead == TRUE)
{
int nPos= sInfo.Find('|');
CString sInfo= sLine.Left(nPos);
int nIdx = m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(),sInfo);
sLine = sLine.Mid(nPos+1);
nPos = sLine.Find('|');
sInfo = sLine.Left(nPos);
m_ListCtrl.SetItemText(nIdx,1,sInfo);
sLine = sLine.Mid(nPos+1);
nPos = sLine.Find('|');
sInfo = sLine.Left(nPos);
sLine = sLine.Mid(nPos+1);
m_ListCtrl.SetItemText(nIdx,2,sInfo);
m_ListCtrl.SetItemText(nIdx,3,sLine);
bRead = file.ReadString(sLine);
}
file.Close();
talkingmute 2005-09-23
  • 打赏
  • 举报
回复
谢谢上边的几位朋友,可是我一运行那程序后,就陷入死循环之中了,出现在这里:
BOOL bRead = file.ReadString(sLine);
while(bRead == TRUE)
{
//我在里面加入了一个MessageBox
...
}
一直出现我设定的那个MessageBox,有什么方法判断到文件末尾呢??
xqk 2005-09-23
  • 打赏
  • 举报
回复
CStdioFile file;
char buffer[32];
file.Open("C:\\1.txt",CFile::modeRead);
file.ReadString(buffer);
//自已判断 | 符号
m_List1.AddString(buffer);
file.ReadString(buffer);
m_List1.AddString(buffer);

file.Close();
快乐鹦鹉 2005-09-23
  • 打赏
  • 举报
回复
列表控件增加列
m_ListCtrl.InsertColumn(0,"1");
m_ListCtrl.InsertColumn(1,"2");
m_ListCtrl.InsertColumn(2,"3");
m_ListCtrl.InsertColumn(3,"4");
用CStdioFile逐行读取
CStdioFile file;
file.Open("***");
CString sLine;
BOOL bRead = file.ReadString(sLine);
while(bRead == TRUE)
{
int nPos= sInfo.Find('|');
CString sInfo= sLine.Left(nPos);
int nIdx = m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(),sInfo);
sLine = sLine.Mid(nPos+1);
nPos = sLine.Find('|');
sInfo = sLine.Left(nPos);
m_ListCtrl.SetItemText(nIdx,1,sInfo);
sLine = sLine.Mid(nPos+1);
nPos = sLine.Find('|');
sInfo = sLine.Left(nPos);
sLine = sLine.Mid(nPos+1);
m_ListCtrl.SetItemText(nIdx,2,sInfo);
m_ListCtrl.SetItemText(nIdx,3,sLine);
}
phoenix96_2000 2005-09-23
  • 打赏
  • 举报
回复
打开文件:CFile::Open CFile::Read

分割字符串:自己做..

写到listctrl: CListCtrl::InsertItem CListCtrl::SetItemText
talkingmute 2005-09-23
  • 打赏
  • 举报
回复
哦,谢谢两位,那请问,象那些二进制文件是怎么产生的,当我用记事本打开时都是乱码,那些数据是怎么写入进去呢?
问的比较基础,希望不要介意!
快乐鹦鹉 2005-09-23
  • 打赏
  • 举报
回复
如果别人想恶意修改,我想那是很难阻止的,就算是二进制的也一样可以胡改。
所以,我们防止的只能是善意的修改(就象门锁一样,只能防君子,小人是防不住的)。那么,你可以简单的做个加密,以便让别人无法看到你真正的数据就可以了。
phoenix96_2000 2005-09-23
  • 打赏
  • 举报
回复
如果你是要防止用户随意修改数据,
可以考虑用ZIP压缩数据,带有数据完整性校验,也可以指定密码加密...

talkingmute 2005-09-23
  • 打赏
  • 举报
回复
哦,谢谢你,已经成功!
在这里,我想再问几个问题,象这种文本文件,如果我们在下面做些修改的话,然后再读时它的内容就变了的,如何能把它们改成那种二进制形式的文件,然后再读出来呢?
希望帮助到底!再次感谢!!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧