SerchDisk.cpp
资源名称:cd_man.zip [点击查看]
上传用户:deyixm
上传日期:2007-01-06
资源大小:43k
文件大小:4k
源码类别:
行业应用
开发平台:
Visual C++
- //---------------------------------------------------------------------------
- // ClassExplorer Pro generated source file
- // Created by 颜承 on 99-11-24, 17:28:33
- //---------------------------------------------------------------------------
- // TSerchDisk 用递归法搜索磁盘目录的类
- // 版权所有(C)2000 颜承
- // 这一程序是自由软件,
- // 你可以遵照自由软件基金会出版的GNU通用公共许可证条款来修改和重新发布这一程序。
- // 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的的隐含的担保。
- // 更详细的情况请参阅GNU通用公共许可证。
- // 你应该已经和程序一起收到一份GNU通用公共许可证的副本。
- // 我的联系方式:桂林集琦药业股份有限公司技术部(541004)
- // E-Mail: ycshowtop@sohu.com
- //-------------------------------------------------------------------------------
- #include "SerchDisk.h"
- //---------------------------------------------------------------------------
- int __fastcall TSerchDisk::Serch()
- {
- int i;
- if(FFilterCount>0){ //对搜索条件处理,加上".",变成大写
- for(i=0;i<FFilterCount;i++) {
- FilterString[i]=FilterString[i].UpperCase();
- if(FilterString[i][1]!='.')
- FilterString[i]=AnsiString(".")+FilterString[i];
- }
- }
- else if(FFilterCount<0) IsAll=true; //搜索全部文件
- if(!FPathName.IsEmpty()){ //开始搜索...
- FindDisk(FPathName);
- return FFileList->Count;
- }
- else return 0;
- }
- //--------------------------------------------------------------------------
- __fastcall TSerchDisk::TSerchDisk()
- {
- FFilterCount=0;
- IsAll=false;
- AddDir=false;
- PathName=AnsiString("");
- FFileList = new TStringList(); //存放结果
- }
- //--------------------------------------------------------------------------
- __fastcall TSerchDisk::~TSerchDisk()
- {
- delete FFileList;
- }
- //--------------------------------------------------------------------------
- //工作函数
- void __fastcall TSerchDisk::FindDisk(AnsiString PathName)
- {
- TSearchRec fRec;
- AnsiString filestring,tmpPathName;
- bool HaveBeen;
- int i;
- PathName.Trim();
- int k= PathName.Length();
- if(PathName[k]!='\') PathName += AnsiString("\");
- tmpPathName=PathName+AnsiString("*.*");
- //找第一个文件
- if(FindFirst(tmpPathName,faAnyFile,fRec)==0 ) {
- if(fRec.Attr==faDirectory) { //如是目录
- if(fRec.Name!=AnsiString(".") && fRec.Name!=AnsiString("..")){
- tmpPathName = PathName + fRec.Name+AnsiString("\");
- FindDisk(tmpPathName); //递归调用本身
- }
- }
- else { //不是目录
- HaveBeen=false;
- for(i=0;i<FFilterCount;i++) { //是否在条件内
- if(fRec.Name.UpperCase().AnsiPos(FilterString[i])!=0) {HaveBeen=true; break;}
- }
- if(HaveBeen==true || IsAll==true) { //如符合条件
- FFileList->Add(PathName + fRec.Name.Trim());
- }
- }
- }
- else return;
- while(1) {
- if(FindNext(fRec)==0 ) {
- if(fRec.Attr==faDirectory) {
- if(fRec.Name!=AnsiString(".") && fRec.Name!=AnsiString("..")){
- tmpPathName = PathName +fRec.Name + AnsiString("\");
- if(AddDir==true) FFileList->Add(tmpPathName);
- FindDisk(tmpPathName);
- }
- }
- else {
- HaveBeen=false;
- for(i=0;i<FFilterCount;i++) {
- if(fRec.Name.UpperCase().AnsiPos(FilterString[i])!=0) {HaveBeen=true; break;}
- }
- if(HaveBeen==true || IsAll==true) {
- FileList->Add(PathName + fRec.Name.Trim());
- }
- }
- }
- else break;
- }
- }
- //---------------------------------------------------------------------------