Hallöchen,
habe folgendes Prob. habe mit FindFirst und FindNext eine Procedure geschrieben, mit der man alle Dateien und Ordner finden können soll!
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;
Als erstes habe ich festgestellt, wenn ich nicht "if ((F1.Attr and faDirectory) = faDirectory) and (SubDirs)" sondern nur "if (F1.Attr = faDirectory) and (SubDirs)" reinschreibe, wird schonmal viel weniger gefunden, viele Unterordner ect. Warum, ich sehe in den zwei Zeilen keinen Unterschied?
2.Versteckte Ordner werden gefunden, aber der Ordner Cookies, der nicht versteckt ist (also meiner Meinung nach nicht SO geschützt ist) wird nicht gefunden, bzw. der Ordner schon, aber der gesamte Inhalt fehlt!
Warum wird der Ordner nicht eingelesen?
Helft mir bitte!