![]() |
Rekursive Dateisuche lässt Unterverzeichnisse aus
Hallo Zusammen,
mit diesem Code, den ich übernommen, nachvollzogen und angepasst habe, möchte ich alle Dateien, in denen ein Teilstring ("4711") vorkommt, in einem StringGrid mit dem jeweiligen Pfad ausgeben. Dabei sollen alle Unterverzeichnisse mit überprüft und die Dateien und Pfade ebenfalls ausgegeben werden.
Delphi-Quellcode:
Ich habe verschiedene Möglichkeiten versucht, aber es wird immer nur im Hauptverzeichnis gesucht und nicht in darin enthaltenen Unterverzeichnissen. Kann mir jemand weiterhelfen?
function FileSearches(const PathName, FileName : string; const InDir : boolean): TRows; // InDir gibt an ob Unterverzeichnisse mit durchsucht werden sollen
var Rec : TSearchRec; Path : string; begin setlength(Result,2,0); Path := IncludeTrailingBackslash(PathName); if FindFirst(Path + '*'+FileName+'*', faAnyFile and not faDirectory, Rec) = 0 then try repeat SetLength(Result,2,Length(Result[0])+1); Result[0,Length(Result[0])-1]:=Path; Result[1,Length(Result[0])-1]:=Rec.Name; until FindNext(Rec) <> 0; finally FindClose(Rec); end; If not InDir then Exit; if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then try repeat if (Rec.Attr in [faDirectory]) and (Rec.Name<>'.') and (Rec.Name<>'..') then //An dieser Stelle werden die Bedingungen nicht erfüllt, obwohl Unterverzeichnisse und weitere Treffer vorhanden sind FileSearches(Path + Rec.Name, FileName, True); until FindNext(Rec) <> 0; finally FindClose(Rec); end; end; Vielen Dank Patrick |
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Zitat:
Delphi-Quellcode:
if (Rec.Attr and faDirectory = faDirectory)
|
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Zitat:
Delphi-Quellcode:
sollte auch gehen :)
if ( faDirectory in Rec.Attr )
Was sagt die Doku zu ![]() |
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Japp, nur so wie ursprünglich klappt es eben nicht, wenn das Verzeichnis noch weitere Attribute hat.
|
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Warum so kompliziert?
Delphi-Quellcode:
uses System.IOUtils;
procedure listFiles(); const searchPattern: String = '*4711*'; var fileName: String; begin for fileName in TDirectory.GetFiles('x:\', searchPattern, TSearchOption.soAllDirectories) do WriteLn(fileName); end; |
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Zitat:
|
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Hallo,
erst mal vielen Dank für die schnellen Antworten!!!
Delphi-Quellcode:
Ich habe es ausprobiert, aber leider kein Erfolg.
if (Rec.Attr and faDirectory = faDirectory)
faDirector=16 Rec.Attr=48 Ich weiß beide Werte leider nicht zu interpretieren.
Delphi-Quellcode:
hier kommt die Fehlermeldung
if ( faDirectory in Rec.Attr )
Delphi-Quellcode:
Gruß Patrick
E2015 Operator ist auf diesen Operandentyp nicht anwendbar
|
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Würde aber passen.
Code:
00110000 //Rec.Attr
00010000 //faDirectory ======== 00010000 //faDirectory |
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
Das Problem sind die fehlenden Klammern ;)
|
AW: Rekursive Dateisuche lässt Unterverzeichnisse aus
@Sir Rufo
Jepp, die Fehlermeldung ist weg, aber ich das Ergebnis ist das gleiche - es wird nur die Datei in dem Hauptverzeichnis angezeigt... Ich weiß nicht ob es wichtig ist, aber der Pfad sieht so aus: \\172.30.44.120\Zeichnungen\ Und dann gibt es halt Unterverzeichnisse \\172.30.44.120\Zeichnungen\A\ \\172.30.44.120\Zeichnungen\Neu\ Ich versuche gerade den Gedanken vom schönen Günter umzusetzen... Vielen Dank Patrick |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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