Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mit Rekursiver-S. auch in versteckten Ordnern Dateien finden (https://www.delphipraxis.net/39625-mit-rekursiver-s-auch-versteckten-ordnern-dateien-finden.html)

St.Pauli 5. Feb 2005 12:28


Mit Rekursiver-S. auch in versteckten Ordnern Dateien finden
 
Hi,

ich will ne suchfunktion machen, die auf der festplatte rekursiv auch in versteckten ordnern nach dateien sucht. habe aber kein plan wie ich das machen soll.
habe mir den quelltext für eine suche aus easyhelper geholt.

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;
Ich muss doch die Attribute an den ------> <------ stellen verändern, damit er auch in versteckten ordnern sucht, oder? hab schon soviel ausporb und nix klappt. hoffentlich könnt ihr mir helfen.

__________________________________________________ _________________________
PS: keine angst, ------> <------ hab ich nicht in meinem Prog stehen, hab sie nurma für hier eingefügt

Christian Seehase 5. Feb 2005 13:22

Re: Mit Rekursiver-S. auch in versteckten Ordnern Dateien fi
 
Moin St.Pauli,

der Fehler liegt hier:

Delphi-Quellcode:
if (SR.Attr = faDirectory) and
die Abfrage muss heissen:

Delphi-Quellcode:
if ((SR.Attr and faDirectory) = faDirectory) and
oder
Delphi-Quellcode:
if ((SR.Attr and faDirectory) <> 0) and
Ausserdem solltest Du statt

Delphi-Quellcode:
faAnyFile - faDirectory
besser
Delphi-Quellcode:
faAnyFile and not faDirectory
schreiben.

In diesem Falle spielt das zwar keine Rolle, aber Bitfelder wie sollte man nur mit logischen Operationen verknüpfen, damit man es nicht falsch macht, wenn es eine Rolle spielt.

St.Pauli 5. Feb 2005 17:36

Re: Mit Rekursiver-S. auch in versteckten Ordnern Dateien fi
 
OK, T H X!!!

Werd ich gleich mal ausprobieren! :-D

:dp:

Binärbaum 6. Feb 2005 23:36

Re: Mit Rekursiver-S. auch in versteckten Ordnern Dateien fi
 
Vielleicht hilft dir hier neben faDirectory auch faHidden.

MfG
Binärbaum


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr.

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