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

📄 unit1.cpp

📁 多线程文件搜索源程序
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PBFolderDialog"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    RemoveFromFiles=false;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::FindFile(AnsiString FileName,AnsiString SeekText)
{
    WIN32_FIND_DATA FindFileData;
    AnsiString str=FileName.SubString(FileName.Length(),1);
    if(str==".")return true;
    if(str!="\\")FileName+="\\";
    str=FileName+AnsiString("*.*");

    HANDLE hFile=FindFirstFile(str.c_str(),&FindFileData);

    while(hFile)
    {
        str=FileName+FindFileData.cFileName;
        if((FindFileData.dwFileAttributes&0x00ff)==0x20)
        {
            if(LocateFile(str,SeekText))Memo2->Lines->Add(str);
        }
        else if((FindFileData.dwFileAttributes&0x00ff)==0x10)
        {
            FindFile(str,SeekText);
        }
        if(FindNextFile(hFile,&FindFileData)==false)
        {
            break;
        }
    }
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::LocateFile(AnsiString FileName,AnsiString SeekText)
{

    TFileStream * pFile=new TFileStream(FileName,fmOpenRead);
    char *buffer=new char[pFile->Size];
    pFile->Read(buffer,pFile->Size);

    AnsiString str=AnsiString(buffer,pFile->Size);
    delete buffer;
    int RetCode=str.AnsiPos(SeekText);
    if(RemoveFromFiles)
    {
        while(RetCode>0)
        {
            str.Delete(RetCode,SeekText.Length());
            RetCode=str.AnsiPos(SeekText);
        }
        delete pFile;
        TFileStream * pFile=new TFileStream(FileName,fmCreate);
        pFile->Write(str.c_str(),str.Length());
        delete pFile;
        return true;
    }
    delete pFile;
    if(RetCode>0)
        return true;
    return false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Memo2->Lines->Clear();
    FindFile(Edit1->Text,Memo1->Lines->Text.SubString(1,Memo1->Lines->Text.Length()-2));
    Label4->Caption=Memo2->Lines->Count;
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    RemoveFromFiles=true;
    Button1Click(this);
    RemoveFromFiles=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
    Close();    
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
//    PBFolderDialog1->Folder="C:\\Windows\\Desktop";
    if(PBFolderDialog1->Execute())
        Edit1->Text=PBFolderDialog1->Folder;

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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