光盘答案出错
发表在C语言图书答疑 2016-02-02
是否精华
版块置顶:
在《Visual C++从入门到精通》第3版的第273页 10.7实践与练习第一题,设计一个树控件来显示磁盘目录。
这题光盘上所给的答案有问题。问题出现在下面这串代码中,其中出错代码出现在OnSelchangedTrdisktree中:
while(1)

parent=m_trdisktree.GetParentItem(parent);
strparent=m_trdisktree.GetItemText(parent);
if(strparent.Find("\\")==2)
goto end;
temp+=strparent;
temp+="\\";

end:
   CString  root=m_trdisktree.GetItemText(parent);
lstr.Format("%s%s%s\\*.*",root,temp,rootstr);
问题就出现在上面这段代码中,当然我不得不承认这段代码设计确实挺巧妙的。但上面执行后
得到的中间路径是反向的,例如我们所点击的文件夹所在路径为D:\a\b\c\d也就是说我们正在点击d文件夹,此时
程序运行到这里后,temp得到的中间路径是,c\b\a\。很明显,这个路径的错误会影响后面一个循环对所点击
的文件夹中子文件夹的查找,其后果是就算d文件夹中有子文件夹,在树控件中也不会正常显示,该程序中只能显示到三级文件夹,就算第三级文件夹中有子文件夹,也不会在树控件中显示了。当然如果能把我上面所提到的问题解决,程序就变得比较完美了。即也就是想办法把这个中间路径变成正序,c\b\a\变成a\b\c\。这个问题我已经想了挺久,实在找不到解决的办法,所以只能来这里发帖子,求高手赐教,谢谢。

分享到:
精彩评论 1
学分: LV1
TA的每日心情
开心
2020-06-16 09:16:38
2016-02-05
沙发
这个程序确实存在这个问题,我再研究一下解决方案。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照