Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Unterordner rekursiv durchlaufen, aber nur bis zur einer bestimmten Tiefe
elbardoni
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Unterordner rekursiv durchlaufen, aber nur bis zur einer bestimmten Tiefe

beantworten | zitieren | melden

Guten Tag,

Mein Programm soll mit der Möglichkeit der Angabe der Tiefe der Unterordner ab ein bestimmten Verzeichnis rekursiv suchen.
Es soll die Möglichkeit gegeben werden entweder alle Unterordner rekursiv zu durchlaufen oder halt bis zur einer bestimmten Tiefe.

Hier für habe ich eine Funktion geschrieben, dass mir den gewünschten Verzeichnis setzt

  //Das Verzeichnis wird gesetzt
       public string setVerzeichnis()
        {
            DialogResult mm_res = verzeichnisBrowser.ShowDialog();
            if (mm_res == DialogResult.OK)
            {
                tbStartpfad.Text = verzeichnisBrowser.SelectedPath;
            }
            verzeichnisBrowser.SelectedPath = tbStartpfad.Text;
            return tbStartpfad.Text;
        }

und die Suche selber


//Variable für den Ordner im gewählten Pfad bzw. Verzeichnis
            DirectoryInfo m_di = new DirectoryInfo(Verzeichnis);

    //Rekursive Suche
            if ((ucSuche1.gewählteSuchOption.Rekursiv == true) && (ucSuche1.gewählteSuchOption.alleUnterordner == true))
            {
                DirectoryInfo[] m_subdirs = m_di.GetDirectories();
                
                for (int i = 0; i < m_subdirs.Length; ++i)
                {
                    //Rekursiver Aufruf der Funktion
                    Suche(m_subdirs[i].FullName);
                }
            }
            else
            {
                if (ucSuche1.gewählteSuchOption.Rekursiv == true)
                {
                    DirectoryInfo[] m_subdirs = m_di.GetDirectories();
                    for (int i = 0; i < ucSuche1.gewählteSuchOption.Rekursivzahl; ++i)
                    {
                        //            if (m_subdirs.Length > ucSuche1.gewählteSuchOption.Rekursivzahl)
                        {
                            //Rekursiver Aufruf der Funktion
                            Suche(m_subdirs[i].FullName);
                        }
                    }                  
                }
            }

Die "normale" rekursive Suche funktioniert, aber ich weis nicht wie ich es mit der Tiefe machen soll.
Ich brauche unbedingt Hilfe.

Ich bin für jede Hilfe echt dankbar.
private Nachricht | Beiträge des Benutzers
EifelYeti
myCSharp.de - Member

Avatar #avatar-3408.jpeg


Dabei seit:
Beiträge: 66
Herkunft: Eifel

beantworten | zitieren | melden

1. Benutze bitte die Code Tags => [Hinweis] Wie poste ich richtig? Punkt 6.
2. Du kannst deiner "Suche" Funktion einen Parameter "Tiefe" und "Maximale Tiefe" mitgeben und dann in der Funktion prüfen ob die Maximale Tiefe erreicht wurde. Bei jedem Rekursiven Aufruf musst du natürlich die Tiefe um 1 erhöhen.
Rekursion
(lat. , die) siehe Rekursion
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2459
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo elbardoni,

auch wenn es schon gelöst ist:

[Tutorial] Bäume durchlaufen mit Rekursion (und Alternativen)
[Snippet] Verzeichnisse und Dateien rekursiv durchlaufen

und

[Tipp] Anfängerfehler == true / == false

Das mit der Tiefe löst du wie EifelYeti schon sagte: Gib ein int mit, prüfe das ab und brich entsprechend ab.

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
elbardoni
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Ihr seit Klasse
Vielen lieben Dank.
private Nachricht | Beiträge des Benutzers