欢迎来到天天文库
浏览记录
ID:10588788
大小:26.51 KB
页数:6页
时间:2018-07-07
《含子目录的搜寻档案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、含子目录的搜寻档案含子目录的搜寻档案标题:非递回、无使用界面的档案搜寻一般来说,搜寻目录及子目录底下符合条件之所有档案功能的程式撰写,一向颇令人头疼,而最後的解决方式多用Recursive(程式递回呼叫)来解决,像所附的范例,就是FileListBox和Recursive程序的兼用,来解决这个问题。本范例则用另一种思考模式切入,在不使用任何OCX及Recursive程序下利用两个非固定阵列变数及双层Do...Loop回圈解决这问题。本范例代表的含意是你把这段Code搬到无使用者可视界面的Module及Class里,一样可以执行(程式里的ListBox及MsgBox只
2、是为了解说方便而已,实际的资料已放入FilePackage这个动态阵列里,可以Index取用。)当然你不能拿Windows95提供的[寻找]功能的搜寻速度来要求本范例,因为那根本是两种不同的驱动方式,但我用c:为搜寻启始目录,以*.*为条件来与的范例程式相比,是2分钟,我是分钟。更值得一提的是,其实整个搜寻动作在55秒时已全部完成,剩下的时间都是用来显示ListBox资料。所以如果你的程式并不需要立即的显示查询结果,那麽本范例将比更适合你使用。最後如果你觉得本程式有任何错误或有改进的意见,请写信给站长,站长会转信给我,在此先谢谢你了。"NeedaListBox,C
3、ommandBoxOptionExplicit"宣告搜寻到的档案的储存阵列变数PrivateFilePackage()AsStringPrivateSubCommand1_Click()"宣告存放目录名称储存阵列变数DimDirPackage()AsString"存放档案搜寻条件之字串DimSearchStringAsString"接收Dir()传回字串,并做为回圈判断的字串DimDirStringAsString"I目前搜寻目录的指位器,J是DirPackage目录阵列之上限指标"K是FilePackage之档案阵列之上限指标DimIAsLong,JAsLong,
4、KAsLong"把ListBox的旧显示资料清掉"把FilePackage的上一次搜寻资料清掉EraseFilePackage"假设我们的搜寻从C碟根目录开始ReDimDirPackage(0)"路径结尾一定要加DirPackage(0)=c:"假设我们的搜寻字串是*.exeSearchString=*.exe"显示沙漏指标=11"--------以下搜寻C碟里所有的目录-----------------"直到目录指位器I超过目录上限指标J才结束搜寻DoWhileI<=J"搜寻目录指位器I所指的目录DirString=Dir(DirPackage(I),v
5、bHiddenOrvbDirectoryOrvbReadOnlyOrvbSystem)"直到目前目录找不到任何目录或档案才结束DoWhileDirString<>"不要把上层目录和现目录的指标符号算进去IfDirString<>.AndDirString<>..Then"如果找到的是个目录If(GetAttr(DirPackage(I)&DirString)AndvbDirectory)_=vbDirectoryThen"把目录上限加1J=J+1"把储存目录名称的阵列加一个ReDimPreserveDirPackage(J
6、)"把查到的新目录放在DirPackage新元素里DirPackage(J)=DirPackage(I)+DirString+"如果找到的是个档案Else"如果与搜寻字串相符合IfUCase(DirString)LikeUCase(SearchString)Then"把储存档案名称的阵列加一个ReDimPreserveFilePackage(K)"把查到的新档案放在filePackage新元素里FilePackage(K)=DirPackage(I)+DirString"把档案上限加1K=K+1EndIfEndIfEndIf"继续找是否有符合的资料,并把结果放Di
7、rString里DirString=DirDoEventsLoop"把现目录指标往下移一个I=I+1Loop"--------以下将结果输出到列示盒里-----------------"--------以下为找到档案之总计-----------------"还原滑鼠指标=0IfK=0ThenMsgBox没有&SearchString&的档案Else"以下将结果输出到列示盒里ForI=0ToUBound(FilePackage)(I)DoEventsNextMsgBox总共找到&UBound(FilePackage)+1&个档案En
此文档下载收益归作者所有