AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner nebst Unterordnern durchsuchen

Ein Thema von Gargamel · begonnen am 3. Mai 2010 · letzter Beitrag vom 3. Mai 2010
Antwort Antwort
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#1

Ordner nebst Unterordnern durchsuchen

  Alt 3. Mai 2010, 18:10
Hallo

Ich will Ordner und alle Unterordner nach Dateien rekursiv durchsuchen. Wenn ich die Rekursion entferne, funktioniert alles. Sobald allerdings die Funktion in sich nochmal aufgerufen wird, schmiert mein Programm ab. Hier der Code:

Delphi-Quellcode:
procedure FindAllFiles(aPath:string; aMask:string; aAttr:integer);
var aRes:TSearchRec;
    EOFound:boolean;
    Filename:string;
    fileAttr:integer;
Begin
  EOFound:=false;
  if FindFirst(aPath+aMask,aAttr,aRes) < 0 then exit;

  while not EOFound do
  Begin
    Filename:=aRes.Name;
    fileAttr:=FileGetAttr(Filename);
    if (fileAttr and faDirectory)=faDirectory then
    Begin
      if (Filename<>'.') and (Filename<>'..') then FindAllFiles(aPath+Filename+'\',aMask,aAttr);
    End
    else
    list.add(filename);

    EOFound:=(FindNext(aRes)<>0);
  End;
  FindClose(aRes);
end;
Achso, "list" ist hier vom Typ TStringList. Dort sollen dann halt alle gefundenen Dateien aufgelistet werden.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ordner nebst Unterordnern durchsuchen

  Alt 3. Mai 2010, 18:22
Kannst du "schmiert ab" genauer beschreiben? Das würde einem unter Umständen sogar einen Blick auf den Quellcode ersparen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Ordner nebst Unterordnern durchsuchen

  Alt 3. Mai 2010, 18:22
Vor kurzem wurde hier ne gute Klasse für sowas reingestellt, vllt währe das was für dich, wenn es nun auch nicht direkt was zu dem Problem ist:

FinFilesCls
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#4

Re: Ordner nebst Unterordnern durchsuchen

  Alt 3. Mai 2010, 18:25
@SirThornberry:

access violation at 0x7c91e8e6: write of address 0x00030ffc

@ lbccaleb:

Danke, ich schaue mal.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Ordner nebst Unterordnern durchsuchen

  Alt 3. Mai 2010, 18:46
Ich sehe gerade was ganz anderes was vielleicht auch den Fehler auslöst:
fileAttr:=FileGetAttr(Filename); 1.) Das ganze ist zum scheitern verurteilt weil Filename bei dir nur der relative Dateiname zum aktuell durchsuchten Pfad ist und somit wird die Datei so gut wie nie gefunden.
2.) Das ganze ist überflüssig da du die Dateiattribute bereits im TSearchRec hast welches durch FindFirst und FindNext gefüllt wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#6

Re: Ordner nebst Unterordnern durchsuchen

  Alt 3. Mai 2010, 20:04
Zitat von lbccaleb:
Vor kurzem wurde hier ne gute Klasse für sowas reingestellt, vllt währe das was für dich, wenn es nun auch nicht direkt was zu dem Problem ist:

FinFilesCls
Erstmal das

Dann gibt es auch noch einige andere FindAllFiles-Funktionen in der DP und CodeLib.
Hier im Forum suchenFindAllFiles & FindAllFilesFindAllFiles

Zitat von Gargamel:
access violation at 0x7c91e8e6: write of address 0x00030ffc
Und an welcher Stelle/CodeZeile tritt diese Exception auf?


[add]
Der Gund ist
Zitat:
Code:
if FindFirst(aPath+aMask,aAttr,aRes) [color=#ff0000][b]<[/b][/color] 0 then exit;
Es stimmt zwar, daß viele Fehlercodes negativ (31. Bit gesetzt > OLE Error Codes = Severity-Flag),
aber
Delphi-Quellcode:
{ The system cannot find the file specified. }
ERROR_FILE_NOT_FOUND = 2;
Zitat:
FindFirst returns 0 if a file was successfully located, otherwise, it returns an error code.
Die Umkehrung von =0 ist <>0
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:56 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