⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serchdisk.cpp

📁 管理光盘的程序
💻 CPP
字号:
//---------------------------------------------------------------------------
// 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;
 }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -