今天早上背了一叠SAT单词,奖励自己玩会儿电脑。很想要一份树状的文件清单,告诉我这个电脑上到底有那些文件夹,又分别放了什么文件。
欣欣想要达到的效果是这样的——
比如c盘上共有3个文件名叫A0、B0、C0,A0里有3个文件1、2、3和一个名为D1的文件夹,B0里有文件4、5,C0里有6,D1里有文件7。
欣欣希望拿到一份这样的清单:
A0 +1 +2 +3 +D1 ++7 B0 +4 +5 C0 +6
开始构思。决定先完成第一步,把指定的一个文件夹下所有文件列出来。
VB绘出的界面是这个样子的(隐去部分不相关内容):
【图】
左上角(driver控件Driver1)选择驱动,下面的(控件Dir1)选择文件夹,单击某个文件夹的名称后,在中间列表(控件File1)显示单个文件夹下的所有文件;单击按钮“start”(command控件cmd),在右侧空白的文本框(Text控件lbl)里显示树状清单。
第一步用for循环轻松完成,各种控件没有翻书复习就搞定了,运行结果:
e:\My Documents\建模 ------------------------------------ +2011年国际原油价格走势分析.pdf +2012年HiMCM(全美高中生数学建模竞赛)准备工作.doc +3程序.txt +file.bak +file.exe +file.o +file.pas +file_random.bak +file_random.exe +file_random.o +file_random.pas +graph.bak +graph.pas +HiMCM2012.pdf +Interpreting Graph欣2.doc +Interpreting Graph欣3.doc +LA.txt +LA_odata.txt +LA2011.txt +LA2011-2012.txt +LA2012.txt +LA油价2011.xls +letter.doc +mcm美国数学建模历年试题.txt +程序.txt +第二个程序.txt +国际原油价格数据.xlsx +建模成员名单.pdf +留言.txt +美国数学建模英语论文规范格式.doc +美国数学建模英语论文规范格式_.doc +数据2.doc +数学建模B题:市场预测(油价).doc =======================================
但这个称不上树状。第二步应该是把线性的清单“修理”成树状的,可是立马想到个致命错误:VB不支持递归。
于是第二步暂停。
哪天想到某个既可以递归又不麻烦的方法时再说吧。~
附:欣欣的VB代码
Private Sub cmd_Click() '开始生成目录 lbl.Text = lbl.Text + File1.Path + Chr(13) + Chr(10) + "------------------------------------" + Chr(13) + Chr(10) For i = 0 To File1.ListCount - 1 File1.ListIndex = i lbl.Text = lbl.Text + "+" + File1.FileName + Chr(13) + Chr(10) Next i lbl.Text = lbl.Text + "=======================================" + Chr(13) + Chr(10) End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path '当选择另一个文件夹时,文件列表同步更新 End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive '当选择另一个驱动时,文件夹列表同步更新 End Sub
不错!虽然不懂VB,但关于递归倒是可以提个小建议。用栈可以模拟。不知道VB能不能实现。
@chrt:哇哦,虽然没有试过,但是觉得用这个办法真的可以呢!~可惜我算法学得太弱了,不知道能不能做出来
VB语言用的比较少 一般是用JAVA
@调研报告:我接下去的确是想学JAVA~
来瞅瞅。。支持一个。。表示看不懂。
@小怪兽:没事,目前为止还没有人说看懂的=、=|||
@甜菜欣欣:表示忒复杂了。。
@小怪兽:代码不长,控件框框也没几个,但我还是得承认编程时把自己绕晕了, 也不知道怎么一弄然后成功了
@甜菜欣欣:不错,,不错哦。。呱唧呱唧
@小怪兽:嘿嘿,我也觉得能糊弄住电脑君很不错~
看不懂!VB没学过!
@爱特微博客:vb上手很快,需要用的时候现学都来得及
VB制作,这是什么制作,我没有听说过?
@淋巴水肿:VB的全称是visual Basic,是一种面向对象的程序语言。我几年前学习了这种语言,现在还时不时拿来开发小工具,就像你看到的这个