Entwickler-Ecke

Dateizugriff - Ordner mit mehreren Masks nach Dateien durchsuchen


stigge - Do 12.06.08 13:07
Titel: Ordner mit mehreren Masks nach Dateien durchsuchen
Ich möchte gerne einen Ordner nach Dateien mit bestimmten Endungen durchsuchen.
Was muss ich an diesem Code ändern, damit er GLEICHZEITIG nach mehreren Endungen sucht?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
procedure GetFilesInDirectory(Directory: Stringconst Mask: Stringconst Mask2: Stringconst Mask3: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then try // Hier müsste der Code geändert werden
    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 and faDirectory) = 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;

Aufgerufen wird die Funktion so:

Quelltext
1:
GetFilesInDirectory(directory, '*.rmt', '*.txt', '*.doc', filelist, false, true);                    

Momentan sucht er ja nur Dateien mit der Endung Mask, was muss ich ändern das er auch Mask2 und Mask3 sucht?
Habs schon mit or versucht, hat aber nicht geklappt. Kann mir jemand helfen?


Moderiert von user profile iconNarses: Topic aus Windows API verschoben am Do 12.06.2008 um 13:54


Blackheart666 - Do 12.06.08 13:36

Schau mal in die Library dort wirst du fündig.


Regan - Do 12.06.08 14:03

Ich würde dir zur Unit SearchTool [http://www.delphi-forum.de/topic_SearchTool+v3011++schnelles+Suchverfahren_48936.html] von Heiko empfehlen. Die kann das auch so.


stigge - Do 12.06.08 15:51

Ah thx, für andere die auch einen solchen Code suchen:

http://www.delphi-library.de/topic_nach+Dateien+mit+unterschiedlichen+Erweiterungen+suchen_21275.html