AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi [gelöst] TFindFile-Komponente - Nur Verzeichnisse listen?
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] TFindFile-Komponente - Nur Verzeichnisse listen?

Ein Thema von scrat1979 · begonnen am 1. Jan 2008 · letzter Beitrag vom 1. Jan 2008
 
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#1

[gelöst] TFindFile-Komponente - Nur Verzeichnisse listen?

  Alt 1. Jan 2008, 20:42
Hallo zusammen,

ich habe auf einer Delphi-Seite folgenden Komponentenquellcode gefunden, der mir alle Dateien/Verzeichnisse ( auch nach Attributen gefiltert ) ausgibt. So weit ist alles klar. Ich habe in meinen Programmen ähnliche Routinen (Dateien ODER Ordner listen) schon x-mal erfolgreich benutzt, daher ist mir der Code auch vollkommen verständlich. Nur eines begrife ich nicht: Wenn ich alls Attribut NUR "ffaDirectory" auf true setze, dann listet die Komponente mir eben nicht nur Verzeichnisse auf - warum auch immer. Hatte bei mir dasselbe Problem. Ich habe es so gelöst, daß in diesem Falle eine extra "Ordner-Listen-Funktion" aufgerufen wurde, in der alle Dateien herausgelöscht wurden, wenn dieses Flag gesetzt wurde. Ich hoffe das Problem ist verständlich beschrieben. Gibt es dafür eine einfache Lösung ( wenn nur ffaDirectory = true dann auch wirklich nur Verzeichnisse listen ) oder liegt es an den Attributen an sich?

Hier mal ein Ausschnitt der Unit:

Delphi-Quellcode:
unit FindFile;

[...]

type
  TFileAttrKind = (ffaReadOnly, ffaHidden, ffaSysFile, ffaVolumeID, ffaDirectory, ffaArchive, ffaAnyFile);
  TFileAttr = set of TFileAttrKind;

[...]

procedure TFindFile.FileSearch(const InPath : string);
var Rec : TSearchRec;
    Attr : integer;
begin
Attr := 0;
if ffaReadOnly in FileAttr then Attr := Attr + faReadOnly;
if ffaHidden in FileAttr then Attr := Attr + faHidden;
if ffaSysFile in FileAttr then Attr := Attr + faSysFile;
if ffaVolumeID in FileAttr then Attr := Attr + faVolumeID;
if ffaDirectory in FileAttr then Attr := Attr + faDirectory;
if ffaArchive in FileAttr then Attr := Attr + faArchive;
if ffaAnyFile in FileAttr then Attr := Attr + faAnyFile;

if SysUtils.FindFirst(inPath + FileMask, Attr, Rec) = 0 then
 try
   repeat
     s.Add(inPath + Rec.Name);
   until SysUtils.FindNext(Rec) <> 0;
 finally
   SysUtils.FindClose(Rec);
 end;

If not InSubFolders then Exit;

if SysUtils.FindFirst(inPath + '*.*', faDirectory, Rec) = 0 then
 try
   repeat
   if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name<>'.') and (Rec.Name<>'..') then
     begin
       FileSearch(IncludeTrailingBackslash(inPath + Rec.Name));
     end;
   until SysUtils.FindNext(Rec) <> 0;
 finally
   SysUtils.FindClose(Rec);
 end;
end;

end.

{
********************************************
Zarko Gajic
About.com Guide to Delphi Programming
[url]http://delphi.about.com[/url]
email: [email]delphi.guide@about.com[/email]
free newsletter: [url]http://delphi.about.com/library/blnewsletter.htm[/url]
forum: [url]http://forums.about.com/ab-delphi/start/[/url]
********************************************
}
//EDIT: Anbei der Quelltext der Komponente
Angehängte Dateien
Dateityp: zip tfindfile_206.zip (1,3 KB, 6x aufgerufen)
Michael Kübler
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 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