Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Festplatte nach Dateien dursuchen (https://www.delphipraxis.net/37576-festplatte-nach-dateien-dursuchen.html)

St.Pauli 7. Jan 2005 14:09


Festplatte nach Dateien dursuchen
 
Hi,

hab den Quelltext von EasyHelper, womit man eine Festplatte, oder auch nur einen Ordner durchsuchen kann. Ich will das ganze benutzen, damit es mir alle unnützen Dateien löscht. das klappt schon ganz gut. hab nur 3 Fragen.
Hier erstma der Qelltext:

Code:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try
    repeat
      List.Add(Directory + SR.Name)
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if (SR.Attr = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = '' then Exit;
    if Directory[Length(Directory)] <> '\' then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFilesInDirectory('C:\', '*.*', Listbox1.Items, False, True);
//wenn man das False auf True setzt, durchsuch er alle unterordner
end;
So, nun hab ich 3 Fragen:

1. Wie kann ich das Umstellen, dass zum Beispiel bei einer such nach *.abc und nach *.xyz gleichzeitig gesucht wird, also nicht:

Code:
GetFilesInDirectory('C:\', '*.abc', Listbox1.Items, False, True);
GetFilesInDirectory('C:\', '*.xyz', Listbox1.Items, False, True);
2. Werden dann auch beide Dateien in die Listox1 kopiert, oder brauche ich 2 Boxen?

3. Wie kann ich eine ProgressBar einbinden, weil wenn man die ganze Festplatte durchsucht dauert es ganz schön lange.

So, jetzt schonma danke für jede antwort :lol: !!

cu

Luckie 7. Jan 2005 14:12

Re: Festplatte nach Dateien dursuchen
 
1: Geht so nicht mit dem Quellcode
2: Kommt drauf an, wie du es löst.
3: Progressbar setzt voraus, dass du weißt, wie viele Dateien und Ordner zu durchsuchen sind.

The-X 7. Jan 2005 14:18

Re: Festplatte nach Dateien dursuchen
 
Zitat:

Zitat von St.Pauli
Zitat:

procedure GetFilesInDirectory(Directory: String; const Mask: String; List: TStrings; WithSubDirs, ClearList: Boolean);
// ... gekürzt
begin
List.BeginUpdate;
try
if ClearList then
List.Clear;

if Directory = '' then Exit;
if Directory[Length(Directory)] <> '\' then
Directory := Directory + '\';
ScanDir(Directory);
finally
List.EndUpdate;
end;
end;
...
Zitat:

GetFilesInDirectory('C:\', '*.abc', Listbox1.Items, False, True);
GetFilesInDirectory('C:\', '*.xyz', Listbox1.Items, False, True);
...

zu Frage 2: ^^ Lesen :)

St.Pauli 7. Jan 2005 14:33

Re: Festplatte nach Dateien dursuchen
 
@ The-X

:oops: :oops: :oops: :oops: :oops:
^^ Jetzt schäme ich mich doch schon ein bisschen! :wink:

St.Pauli 8. Jan 2005 10:37

Re: Festplatte nach Dateien dursuchen
 
OK, klappt aber eigentlich schon mit 2 Suchläufen recht zügig


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz