Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu FindFirst (https://www.delphipraxis.net/59689-frage-zu-findfirst.html)

3_of_8 27. Dez 2005 12:11


Frage zu FindFirst
 
Hallo! Ich will alle Dateien und Ordner in einem Verzeichnis bekommen und ich verwende dazu FindFirst und FindNext. Jetzt meine Frage:

Findet faAnyFile auch Ordner? Oder muss ich da faAnyFile+faDirectory schreiben?

Wie verhindere ich, dass FindFirst bzw. FindNext mir auch die Ordner "." und ".." liefern?

diComm 27. Dez 2005 12:15

Re: Frage zu FindFirst
 
"." und ".." musst Du, denke ich, mit IF abfangen, so hab ich es immer gemacht...

kalmi01 27. Dez 2005 12:17

Re: Frage zu FindFirst
 
Hi,

Delphi-Quellcode:
    procedure DirShow (SearchDir, SearchFile : string;
                        var FileList : TStringList);
      var
        i        : Integer;
        SearchRec : TSearchRec;
      begin
        if SearchDir[Length(SearchDir)] <> '\' then SearchDir := SearchDir + '\';
        i := FindFirst(SearchDir + SearchFile, faDirectory, SearchRec);

        while i = 0
        do begin
             if (SearchRec.Name <> '.')
                and
                (SearchRec.Name <> '..')
             then begin
                    if FileExists(SearchDir + SearchRec.Name)
                    then FileList.Add(SearchDir + SearchRec.Name);
                  end;

             i := FindNext(SearchRec);
           end;
        FindClose(SearchRec);
      end;

himitsu 27. Dez 2005 12:18

Re: Frage zu FindFirst
 
Code:
[b]faAnyFile =[/b] faReadOnly or faHidden or faSystemFile or faVolumeID or [b]faDirectory[/b] or faArchive or faSymLink;
Delphi-Quellcode:
B := FindFirst('*.*', SR);
While B do Begin
  If (SR.Name <> '.') and (SR.Name <> '..') Then
    If SR.Attr and faDirectory <> 0 Then Begin
      // alle Dateien
    End Else Begin
      // alle Verzeichnisse
    End;
  B := FindNext(SR);
End;
FindClose(SR);
[add]
Na ja, zwar etwas langsam, dafür hab'sch dat wenigstens gerade selber geschrieben :mrgreen:

Und wenn ich derzeit einen großen Fhler in 'nem anderem Modul finden würde, dann könnte ich mal erwähnen, das meine eigene FindFirst-Version "." und ".." erst garnicht mit auflistet und so'ne Abfrage überflüssig machen würde -.-''


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