ich hab hier ein kleines Filesearch Tool dass ich gerne und viel Einsetze.
Die Letzte Suche vörderte folgendes zu tage:
gesucht wird bei mir mittels:
Code: Alles auswählen
Procedure TForm1.GetFilesInDirectory(ADirectory: String;
Const AMask: Tstringlist; ARekursiv: Boolean);
Var
sr: TSearchRec;
t: String;
dummy1, dummy2, i: integer;
b: Boolean;
Begin
If panik Then exit;
Application.ProcessMessages;
// Include Trailing Backslash
ADirectory := IncludeTrailingPathDelimiter(ADirectory);
// Suchen der Dateien im Ordner
If (FindFirstUTF8(ADirectory + '*', faAnyFile And faDirectory, SR) = 0) Then Begin
Repeat
// Dank dieser Variante sind wir case insensitiv, obwohl es das Betriebsystem eventuell ist !
For i := 0 To amask.count - 1 Do Begin
If CheckBox3.Checked Then Begin
t := ADirectory + SR.Name;
dummy2 := 0;
b := Rex.MatchString(t, dummy1, dummy2);
End
Else Begin
If (pos('.', amask[i]) <> 0) Then Begin
t := lowercase(ExtractFileExt(ADirectory + SR.Name));
End
Else Begin
t := lowercase(ADirectory + SR.Name);
End;
b := (pos(amask[i], t) <> 0) Or (amask[i] = '*') Or (lowercase(SR.Name) = lowercase(amask[i]));
End;
If b Then Begin
If (SR.Name <> '.') And (SR.Name <> '..') Then Begin
StatusBar1.Panels[0].Text := copy(ADirectory + SR.Name, length(BasePath), length(ADirectory + SR.Name));
ProceedFind(ADirectory + SR.Name);
Application.ProcessMessages;
End;
End;
End;
(*
* Rekursiver Abstieg
*)
If ARekursiv Then Begin
If (SR.Name <> '.') And (SR.Name <> '..') And (SR.Attr And FaDirectory = FaDirectory) Then
GetFilesInDirectory(ADirectory + SR.Name, AMask, True);
End;
Until (FindNextUTF8(SR) <> 0) Or panik;
End;
FindCloseUTF8(SR);
End;
Code: Alles auswählen
(*
* Rekursiver Abstieg
*)
If ARekursiv Then Begin
If (SR.Name <> '.') And (SR.Name <> '..') And (SR.Attr And FaDirectory = FaDirectory) Then
{$IFDEF LINux}
If ((SR.Attr And fasymlink) = 0) Then Begin
{$ENDIF}
GetFilesInDirectory(ADirectory + SR.Name, AMask, True);
{$IFDEF LINux}
End;
{$ENDIF}
End;