📄 serchdisk.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 + -