1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Eigentlich VB.Net Problem _ rekurisver Filesystem zugriff

  • epi.um
  • 13. Januar 2005 um 14:05
  • Unerledigt
  • epi.um
    14
    epi.um
    Mitglied
    Punkte
    2.055
    Beiträge
    378
    • 13. Januar 2005 um 14:05
    • #1

    Folgendes Problem

    versuche rekursiven Filesystem zugriff der folgender Maßen ausschaut

    Code
    Function schleife(Path as string)
    
      Name1= Dir(Path, vbDirectory)
      Schleife
      wenn dir dann gehe schleife(Path+DirectName)
      else
      msgbox(Name)
      name1=Dir()
    
      End Function



    So nun mein Problem .... wenn ich aus einem Unterordner wieder versuche auf die vorherige Ebene zu gelangen schmiert mir das ganze mit einem Fehler ab, dass für "name1=Dir()" das DIr() vorher mit so einem "Name1= Dir(Path, vbDirectory)" definiert werden muss.... okay insofern noch logisch... aber warum merkt das Programmm sich diesen Aufruf vor der rekursion nicht?

    Wie kann ich das bsp lösen ohne mit positionierungs schleifen zu arbeiten (also dass ich so lange das einfache dir aufrufe bis ich auf der gewünschten pos bin) ?

    Ich will viel³ Sonne, einen wolkenlosen³ Himmel, 36° Grad und Segeln! :verycool:

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 13. Januar 2005 um 18:35
    • #2

    ich möchte dir gerne helfen, aber ich werd aus deinem posting nicht ganz schlau... bzw aus dem (pseudo)code.

    Dir(Paht,vbDirectory) liefert dir die verzeichniseinträge, aber für was willst du dann name1=Dir() aufrufen?
    vllt kannst ja deinen code posten.

  • epi.um
    14
    epi.um
    Mitglied
    Punkte
    2.055
    Beiträge
    378
    • 13. Januar 2005 um 22:09
    • #3

    Jep... hatte den org. Code nicht bei der Hand

    Code
    Function seekdir(ByVal Pfad1 As String) As String
    
      		Dim Name1 As String
      		Dim Name2 As String
      		Dim SucheText As String = TextBox2.Text
      		Dim lenStext As Integer = Len(SucheText)
    
      		' Ersten Eintrag abrufen.	    
      		Name1 = FileSystem.Dir(Pfad1, FileAttribute.Directory)
    
      		Do While Name1 <> ""	' Schleife beginnen.
      			' Aktuelles und übergeordnetes Verzeichnis ignorieren.
    
      			If Name1 <> "." And Name1 <> ".." Then
     			 ' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein
      				' Verzeichnis ist.
     			 If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then
     				 seekdir(Pfad1 & Name1 & "\")
      				Else
      				    Dim x As Integer
     				 x = InStr(1, Name1, SucheText)
     				 Dim y As Integer = x + lenStext - 1
     				 Name2 = Name1.Substring(0, x - 1) & Name1.Substring(y, Len(Name1) - y)
     					MsgBox(Name2)
     			 End If	' um ein Verzeichnis handelt.
      			End If
      			Name1 = Dir() ' Nächsten Eintrag abrufen.
      		Loop
      	End Function
    Alles anzeigen



    Thx... :)

    Ich will viel³ Sonne, einen wolkenlosen³ Himmel, 36° Grad und Segeln! :verycool:

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 13. Januar 2005 um 23:14
    • #4

    hallo,
    hab jetzt selber ein wenig probiert aber dann hab ich das gefunden:

    Zitat

    Aufgrund der Natur der dir-Funktion (siehe Hilfe) ist ein direkter rekursiver Aufruf nicht möglich. Aber natürlich kann man die Ergebnisse zwischenspeichern und darauf wieder zurückgreifen, so dass sich ein rekursiver Aufruf simulieren lässt. Für die Zwischenspeicherung bietet sich ein Array an.

    das hab ich von hier.
    aber vllt hilft dir folgendes codebeispiel weiter:
    http://www.activevb.de/tipps/vb6tipps/tipp0128.html

    mfg seHaas

  • epi.um
    14
    epi.um
    Mitglied
    Punkte
    2.055
    Beiträge
    378
    • 13. Januar 2005 um 23:29
    • #5
    Zitat von seHaas

    hallo,
    hab jetzt selber ein wenig probiert aber dann hab ich das gefunden:
    das hab ich von hier.
    aber vllt hilft dir folgendes codebeispiel weiter:
    http://www.activevb.de/tipps/vb6tipps/tipp0128.html

    mfg seHaas

    Alles anzeigen

    Thanx a lot :)

    Ich will viel³ Sonne, einen wolkenlosen³ Himmel, 36° Grad und Segeln! :verycool:

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 14. Januar 2005 um 08:37
    • #6

    was mir noch eingefallen ist, du könntest ja einfach ein c#-classlibrary machen mit einer klasse die eben diese file-funktionen die du brauchst enthält.
    da gehts sicher mit rekursionen:

    Code
    private int searchDir(string path)
                 {
                     DirectoryInfo di = new DirectoryInfo(path);
                     FileInfo[] fi = di.GetFiles("*.mp3");
                     for (int i=0; i<fi.Length;i++)
                     {
         //dateien: fi[i].Name
                     }
      DirectoryInfo[] dil = di.GetDirectories();
                     for (int i=0; i<dil.Length; i++)
                     {
                        this.searchDir(path+Path.DirectorySeparatorChar+dil[i].Name);
         //ordner durchsuchen
                     }
                     return fi.Length;
                 }
    Alles anzeigen
  • bosie
    13
    bosie
    Mitglied
    Reaktionen
    7
    Punkte
    1.767
    Beiträge
    325
    • 29. Januar 2005 um 00:23
    • #7
    Zitat von epi.um

    Jep... hatte den org. Code nicht bei der Hand

    Code
    Function seekdir(ByVal Pfad1 As String) As String
    
      		Dim Name1 As String
      		Dim Name2 As String
      		Dim SucheText As String = TextBox2.Text
      		Dim lenStext As Integer = Len(SucheText)
    
      		' Ersten Eintrag abrufen.	    
      		Name1 = FileSystem.Dir(Pfad1, FileAttribute.Directory)
    
      		Do While Name1 <> ""	' Schleife beginnen.
      			' Aktuelles und übergeordnetes Verzeichnis ignorieren.
    
      			If Name1 <> "." And Name1 <> ".." Then
     			 ' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein
      				' Verzeichnis ist.
     			 If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then
     				 seekdir(Pfad1 & Name1 & "\")
      				Else
      				    Dim x As Integer
     				 x = InStr(1, Name1, SucheText)
     				 Dim y As Integer = x + lenStext - 1
     				 Name2 = Name1.Substring(0, x - 1) & Name1.Substring(y, Len(Name1) - y)
     					MsgBox(Name2)
     			 End If	' um ein Verzeichnis handelt.
      			End If
      			Name1 = Dir() ' Nächsten Eintrag abrufen.
      		Loop
      	End Function
    Alles anzeigen



    Thx... :)

    ajo, jetzt weiß ich wieder warum ich c# und net vb.net mach :winking_face:

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern