| |

VB.NET - FortgeschritteneSubfolders u. UnterSubfolders von einem Ordner | |  | Autor: [CrX]Garfield | Datum: 25.04.04 11:29 |
| Hi @ all,
ich hab mir mal ein Programm gebastelt, worin man ein Verzeichniss auswählen kann, und dass dann alle Unterverzeichnisse des Verz. auflistet.
Was mein Problem dabei ist:
So wie ich es geschrieben habe, dauert das Programm EWIG.... die ersten Verzeichnisse (so bis 300) gehen einigermaßen schnell, aber ab da wirds dann langsam immer langsamer..
villeicht könntet ihr den Code ja mal für mich analysieren, und villeicht ein bisschen Optimieren, so dass des schneller geht?
Und wenn jemand ne Idee hat wies villeicht ganz aanders geht, dann auch posten, möcht mal gucken um wieviele Ecken ich mal wieder Quergedacht hab ...denn meistens denk ich komplizierter, als es sein muss!
ich geb euch mal den Code von den wichtigen funktionen: und das tool könnt ihr euch am Ende des Beitrages auch herunterladen, weil es villeicht einer genauen CodeInspektion bedarf (weis ich ja nicht)
Public stack As String
Private Sub btn_InsertObjects_Click(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles btn_InsertObjects.Click
Dim dir As String
Dim subdir As String
For Each subdir In System.IO.Directory.GetDirectories( _
Me.dlb_Folders.Path)
stack = stack & subdir & vbCrLf
If LCase(stack) Like "*?:\recycler" & vbCrLf Then
stack = Microsoft.VisualBasic.Left(stack, Len(stack) - 13)
ElseIf LCase(stack) Like "*?:\system volume information" & vbCrLf _
Then
stack = Microsoft.VisualBasic.Left(stack, Len(stack) - 30)
End If
Next
dir = NextLine()
Do While Not dir = ""
On Error Resume Next
For Each subdir In System.IO.Directory.GetDirectories(dir)
stack = stack & subdir & vbCrLf
Next
dir = NextLine()
Application.DoEvents()
Loop
MsgBox(stack)
End Sub
Private Function NextLine()
Static lastdir As String
Static curline As Integer = 0
Dim line As String
Dim endLine As Integer
Dim dir As String
Do Until endLine = curline + 1
Do Until Microsoft.VisualBasic.Right(line, 2) = vbCrLf
line = Microsoft.VisualBasic.Left(stack, Len(line) + 1)
Application.DoEvents()
Loop
line = line & "®"
endLine = endLine + 1
Me.Label1.Text = "curline=" & curline & "endline=" & endLine
Application.DoEvents()
Loop
line = Microsoft.VisualBasic.Left(line, Len(line) - 3)
Do While Not Microsoft.VisualBasic.Left(dir, 2) = vbCrLf
dir = Microsoft.VisualBasic.Right(line, Len(dir) + 1)
If Len(dir) >= Len(line) Then Exit Do
Application.DoEvents()
Loop
If Not Len(dir) >= Len(line) Then dir = Microsoft.VisualBasic.Right( _
dir, Len(dir) - 2)
curline = curline + 1
If Not dir = lastdir Then
lastdir = dir
Return dir
Else
Return ""
End If
End Function Download
Vielen Dank schonmal an jeden der das bis hier gelesen hat.
[CrX]Garfield |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevPopUp 2.0 
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|