AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Rekursive Dateisuche lässt Unterverzeichnisse aus
Thema durchsuchen
Ansicht
Themen-Optionen

Rekursive Dateisuche lässt Unterverzeichnisse aus

Ein Thema von Ykcim · begonnen am 30. Okt 2014 · letzter Beitrag vom 30. Okt 2014
Antwort Antwort
Seite 1 von 3  1 23      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#1

Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:26
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:
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;
Ich habe verschiedene Möglichkeiten versucht, aber es wird immer nur im Hauptverzeichnis gesucht und nicht in darin enthaltenen Unterverzeichnissen. Kann mir jemand weiterhelfen?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:28
Zitat:
if (Rec.Attr in [faDirectory])
Müsste das nicht so lauten?
if (Rec.Attr and faDirectory = faDirectory)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:31
Zitat:
if (Rec.Attr in [faDirectory])
Müsste das nicht so lauten?
if (Rec.Attr and faDirectory = faDirectory)
oder einfach andersherum if ( faDirectory in Rec.Attr ) sollte auch gehen

Was sagt die Doku zu Delphi-Referenz durchsuchenTSearchRec? Nö, geht doch nicht, ist nämlich kein Set ... sondern nur ein Integer
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (30. Okt 2014 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:32
Japp, nur so wie ursprünglich klappt es eben nicht, wenn das Verzeichnis noch weitere Attribute hat.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:33
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;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:34
Warum so kompliziert?
Delphi-Quellcode:
procedure listFiles();
const
   searchPattern: String = '*4711*';
var
   fileName: String;
begin
   for fileName in TDirectory.GetFiles('x:\', searchPattern, TSearchOption.soAllDirectories) do
      WriteLn(fileName);
end;
Weil das ja jeder einfach so machen könnte
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:38
Hallo,

erst mal vielen Dank für die schnellen Antworten!!!

if (Rec.Attr and faDirectory = faDirectory) Ich habe es ausprobiert, aber leider kein Erfolg.
faDirector=16
Rec.Attr=48 Ich weiß beide Werte leider nicht zu interpretieren.

if ( faDirectory in Rec.Attr ) hier kommt die Fehlermeldung
E2015 Operator ist auf diesen Operandentyp nicht anwendbar Gruß Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:40
Würde aber passen.
Code:
00110000 //Rec.Attr
00010000 //faDirectory
========
00010000 //faDirectory
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:44
Das Problem sind die fehlenden Klammern
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Rekursive Dateisuche lässt Unterverzeichnisse aus

  Alt 30. Okt 2014, 17:50
@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
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 09:25 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