Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FindFirst/FindNext -> findet Dateien nicht! (https://www.delphipraxis.net/22506-findfirst-findnext-findet-dateien-nicht.html)

F.W. 18. Mai 2004 14:08


FindFirst/FindNext -> findet Dateien nicht!
 
Ich habe folgenden Source:
Delphi-Quellcode:
procedure DateiListe(Pfad, Name: String; SubDirs: Boolean;
  Attr: Integer; Ausgabe: TStrings);
var
F1, F2: TSearchRec;
A: Char;
begin
Pfad := SetPfad(Pfad, True);
if FindFirst(Pfad+Name, Attr, F1) = 0 then begin
    if (F1.Name <> '.') and (F1.Name <> '..') then begin
       Case F1.Attr of
         faDirectory : A := '+';
         faHidden   : A := '#';
         faArchive  : A := '<';
         faReadOnly : A := '-';
         faSysFile  : A := '$';
         faVolumeID : A := '=';
         faAnyFile  : A := '/';
       end;

       if A > '' then
          Ausgabe.Add(A+Pfad+F1.Name);

//       if ((F1.Attr and faDirectory) = faDirectory) and (SubDirs) then
          DateiListe(Pfad+SetPfad(F1.Name, True), Name, SubDirs, Attr, Ausgabe);
    end;
    While FindNext(F1) = 0 do begin
        if (F1.Name <> '.') and (F1.Name <> '..') then begin
           Case F1.Attr of
             faDirectory : A := '+';
             faHidden   : A := '#';
             faArchive  : A := '<';
             faReadOnly : A := '-';
             faSysFile  : A := '$';
             faVolumeID : A := '=';
             faAnyFile  : A := '/';
           end;

           if A > '' then
              Ausgabe.Add(A+Pfad+F1.Name);

//       if ((F1.Attr and faDirectory) = faDirectory) and (SubDirs) then
              DateiListe(Pfad+SetPfad(F1.Name, True), Name, SubDirs, Attr, Ausgabe);
        end;
    end;

end;
end;
Warum werden die Dateien im Ordner Cookies nicht angezeigt? Selbst Versteckte Dateien zeigt er, die meiner Meinung nach einen höheren Sicherheitsstatus haben, als die im Ordner Cookies!

negaH 18. Mai 2004 14:13

Re: FindFirst/FindNext -> findet Dateien nicht!
 
F1.Attr ist Bitcodiert, d.h. es kann auch faDirectory UND faHidden gesetzt sein. Deinen Anfrage mit Case ist demnach falsch.

Gruß Hagen

alcaeus 18. Mai 2004 15:56

Re: FindFirst/FindNext -> findet Dateien nicht!
 
mach die Abfrage immer so
Delphi-Quellcode:
if (F1.attr AND faDirectory) = faDirectory then
//...
Das funktioniert natürlich für alle Attribute

F.W. 18. Mai 2004 16:35

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Das weiß ich inzwischen schon -> http://www.delphipraxis.net/internal...730&highlight=
aber ich habe diese Abfrage mal weggelassen, da hat es mir die Cookies auch nicht aufgelistet!

Luckie 18. Mai 2004 17:44

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Die Cookies wirst du so nicht bekommen. Das ist ein spezieller Ordner in Windows. An dessen Inhalt kommst du mit MSDN-Library durchsuchenFindFirstURLCacheEntry dran.

F.W. 18. Mai 2004 20:49

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Nee, ich meine den Ordner "Cookies" in den Dokumente und Einstellungen! Dort sind doch Dateien drin, die listet mir die Procedure nicht auf!

Das muss doch unter Dach und Fach zu bekommen sein!

Christian Seehase 19. Mai 2004 21:09

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Moin F.W.,

das Problem dürfte sein, dass die Variable A nicht initialisiert wird.
Da es eine lokale Variable ist hat das zur Folge, dass sie einen zufälligen Wert enthält.
Durch die Case Anweisungen wird der Wert auch nicht verändert (siehe Hagens und alcaeus' Postings), so das, vermutlich, A <= ' ' ist und nie eine Zeile zu Ausgabe hinzugefügt wird.

F.W. 21. Mai 2004 14:47

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Das hatte ich schonmal, ist aber inzwischen weg, so geht's ja, aber bei diesem Ordner nicht!

Es kann sein, dass andere Ordner auch nicht, aber der ist mir gerade aufgefallen!

Christian Seehase 21. Mai 2004 20:19

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Moin F.W.,

was übergibst Du denn in Deinem Parameter Attr?

Ich habe die Erfahrung gemacht, dass es sinnvoll ist grundsätzlich faAnyFile zu verwenden, und anschliessend selber zu filtern.

F.W. 21. Mai 2004 20:57

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Da ich sowieso alles auflisten möchte, nehme ich immer faAnyFile!

Christian Seehase 22. Mai 2004 01:12

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Moin F.W.,

also dann versteh' ich das nicht ganz. :gruebel:

Bist Du schon mal im Einzelschritt da durchgegangen, und hast Dir den Ablauf, incl. Inhalte der Variablen angesehen?

Was noch interessant wäre:
Welchen Wert übergibst Du als Startpfad?

DanielF 22. Mai 2004 02:14

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Schau dir doch mal meine abgeänderte Komponente an:
tdfFindFile

Robert Marquardt 22. Mai 2004 05:36

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Auch faAny kann Probleme haben.
Die Gemeinheit sind ein paar Extra-Bits won NTFS wie "komprimiert".

F.W. 22. Mai 2004 15:17

Re: FindFirst/FindNext -> findet Dateien nicht!
 
Das isses! NTFS! Auf meinem andern PC (kein NTFS) geht's, danke!!!! :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 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