Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   rekursionstiefe erkennen bei ordnern (https://www.delphipraxis.net/181944-rekursionstiefe-erkennen-bei-ordnern.html)

sx2008 19. Sep 2014 17:55

AW: rekursionstiefe erkennen bei ordnern
 
Auf Github habe ich eine FileScanner Klasse, die für jede gefundene Datei (und jedes Verzeichnis) ein Event feuert.
https://github.com/sx2008/Delphi-Tes...er/FileScanner
Über das Event bekommt man nicht nur den Dateinamen sondern auch Pfad, Dateigröße, Datum und die Verzeichnistiefe mitgeteilt.
Mit einer kleinen Änderung könnte man sogar die Suchtiefe auf einen bestimmten Wert begrenzen.

nuclearping 19. Sep 2014 18:06

AW: rekursionstiefe erkennen bei ordnern
 
Wenn du es in deiner eigenen Funktion lösen willst, dann brauchst du (wie schon gesagt wurde) entweder eine globale Variable (:shock:) oder du musst die Tiefe in deiner Prozedur "mitschleifen".
Delphi-Quellcode:
procedure tform1.FindAllFiles(var FileList: TStrings; RootFolder: string; RecurseLevel: Integer = 0; Mask: string ='*.*'; Recurse: Boolean = True);
begin
  //...
  if RecurseLevel = 0 then
    ShowMessage('Root')
  else
    ShowMessage(Format('%d. Ebene', [RecurseLevel + 1]);
  r := FindFirst(...);
  while r = 0 do
    begin
      if (SR.Attr and faDirectory = faDirectory) and (sr.name[1] <> '.') then
        FindAllFiles(..., ..., RecurseLevel + 1, ...)
      else ...
    end;
end;

himitsu 19. Sep 2014 19:04

AW: rekursionstiefe erkennen bei ordnern
 
Zitat:

Zitat von pelzig (Beitrag 1273208)
Müsste man beim rekursiven Procedure-Aufruf nicht irgendwo trotzdem noch global den Anfangswert der Rekursionstiefe setzen :?:

Zitat:

Zitat von nuclearping (Beitrag 1273214)
oder du musst die Tiefe in deiner Prozedur "mitschleifen".

siehe #3 :angel:

Entweder manuell beim ersten/äußeren Aufruf die 0 (Startwert) übergeben, oder das als Defaultwert automatisch machen lassen.

pelzig 19. Sep 2014 19:15

AW: rekursionstiefe erkennen bei ordnern
 
Also Alles was Recht ist, Herr nuclearping:

So einfach ein "ShowMessage()" innen Süßkot reinschreiben kann doch jeder :-(

Hier HEFTIGER angesagt ist das Parsen aller Map-Dateien, die über streng geheime Compileroptionen in der DPR-Datei mit ifDef und abwegigen *.inc-Dateipfaden...

[Srg+O+O] geht wohl nicht mehr nach neuer als Delph7personal?

Man man man! Deutsch, nicht män män män!

Die Problemlösung für den TE dürfte recht einfach sein, da fast Jeder schon mal rekursiv Ordner nach Dateien durchsucht hat.

Aber eine Copy&Paste-Lösung hier für den TE reinstellen möchte ich
(oder himitsu?/nuclearping?) nicht! Die kann der TE sich ergoogeln!

MfG

himitsu 19. Sep 2014 19:40

AW: rekursionstiefe erkennen bei ordnern
 
Reicht es nicht, wenn die schon zwei Mal gepostet und mindestens 5 Mal erwähnt wurde?

pelzig 19. Sep 2014 19:47

AW: rekursionstiefe erkennen bei ordnern
 
Manchmal bekommt man erfrischend neue Sachen von der DP mit, wenn man seinen Cache löscht...

MfG

Luckie 19. Sep 2014 22:43

AW: rekursionstiefe erkennen bei ordnern
 
Darf ich auch noch mal? :cyclops:

Also entweder in einer Globalen Variable mitzählen. Kann man auch schön in eine Klasse kapseln und/oder einen Event bei jedem Aufruf auslösen und von außen mitzählen. Das kann man auch schön in eine Klasse kapseln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
Seite 2 von 2     12   

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