Schnelle Rekursive suche

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Schnelle Rekursive suche

    Guten Tag zusammen, mal wieder belästige ich euch mit meinen Fragen :)

    Ich befasse mich jetzt schon seit Tagen mit einer Suchfunktion. Ich habe mir etwas gebastelt, Teils mit Quellen aus dem Netz, das wie folgt aussieht:

    VB.NET-Quellcode

    1. Dim BMArray() As String = Nothing
    2. Try
    3. BMArray = System.IO.Directory.GetFiles("C:", "*.txt", IO.SearchOption.AllDirectories)
    4. Catch dirNotFound As System.IO.DirectoryNotFoundException
    5. Throw dirNotFound
    6. Finally
    7. For Each File As String In BMArray
    8. If File.EndsWith(BmFertig + "_Dose.txt") Then 'Or File.EndsWith(BmFertig + "_Minflow.txt") Then
    9. DataGridView1.Rows(x - 1).Cells(0).Style.BackColor = Color.Red
    10. MessageBox.Show("Achtung! Rot hinterlegte BM-Nummern sind schon vorhanden. Bitte überprüfen!", "BM-Nummern Check", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    11. Exit For
    12. Else
    13. DataGridView1.Rows(x - 1).Cells(0).Style.BackColor = Color.Green
    14. End If
    15. Next
    16. End Try

    Das funktioniert in einem kleinen lokalen Verzeichnis ganz gut.
    Aber, sobald es um einige 10k Dateien geht die nicht lokal sondern auf einem Netzlaufwerk liegen, dauert es viel zu lange.(Pro abfrage ca 8min :/)

    Da die Dateien nach denen ich suche in einem Ordner liegen müssen der den selben namen (nur ohne .xxx) hat würde ich gerne suchen ob dieser Pfad denn vorhanden ist.
    Wie genau stelle ich das an?
    Da ich nicht weiß wie genau der Pfad heißt müsste ich mir ein Array aus allen Verzeichnissen basteln und dieses dann nach einem String, dem Ordnernamen durchsuchen, oder sehe ich das Falsch?
    Wäre schön wenn mir jemand den schubs in die Richtige Richtung geben könnte
    Das eigliche Problem scheint mir, dass hier das Dateisystem als Datenbank missbraucht wird.
    Das ist nunmal keine gute Idee, es geeeeht zwar, hat aber verschiedene Beschränkungen, und eine davon ist die Such-Geschwindigkeit.

    Im Grunde war das schon Ende letzten Jahres absehbar, als es drum ging, Dateien nach iwelchen Kriterien umzubenennen und herumzuschieben.: Dateien Filtern in Kategorien gliedern und entsprechend der Kategorie in bestimmte Ordner ablegen

    Nun stellt sich (im Grunde zum wiederholten mal) die Frage: Willst du noch immer so weiter-wursteln, oder willst du endlich aus der Geschichte mal eine ordentliche Datenverarbeitung machen?
    @ErfinderDesRades
    Ich danke dir für deine Hilfe in der letzten zeit und genauso für deine Kritik.
    Kann mir gut vorstellen das es für jemanden der sich wohl schon seit Jahren damit beschäftigt, vermutlich auch beruflich damit zutun hat ein leichtes ist nicht zu "wursteln" und es frustrierend findet wenn es Anfänger tun.
    Ich finde es schade das Leute wie du,die es echt drauf haben, nicht verstehen können dass jemand der sich kaum mit dem coden auskennt, nicht die Zeit dafür hat (Anderer Beruf+Leben) sich jeden tag mehrere stunden damit Auseinanderzusetzen, sondern einfach nur froh ist wenn das was man sich in Mühevoller kleinarbeit aneignet, einfach mal funktioniert.
    Ich verstehe auch nicht ganz was du von mir erwartest. Du kannst dich und deine Fähigkeiten doch nicht mit mir und meinen vergleichen.
    Wenn ich es besser wüsste würde ich es besser machen und hier nicht nachfragen. :)
    @ErfinderDesRades (Unter der Annahme, dass es sich hier um ein Firmennetz handelt in dem Julia "rumwurschtelt")
    Du stellst dir das alles so einfach vor, aber ganz so schön und bunt ist die Welt nicht.
    Versuch mal die Dateiverwaltung für mehrere Abteilungen, unmengen an Dateien und unterschiedlich geschulte Mitarbeiter zu vereinheitlichen.
    Kosten-Nutzen-Faktor unso, wird schwierig...
    oh - sorry - dann hab ich's falsch eingeschätzt. Ich dachte, weil das Projekt dich scheints nun schon ein halbes Jahr begleitet, dass du dich eingehender mit Programmieren beschäftigst.
    Und ist auch blöd formuliert von mir. Also es geht mir nicht drum, dich abzukanzeln, sondern dein Interesse zu wecken, das Projekt auf eine tragfähige Basis zu migrieren.

    Und ganz schlecht formuliert ists auch wieder nicht, denn wenn nicht migriert wird, dann ist "weiter-wursteln" eiglich schon die korrekte Bezeichnung, ob man das nun mag oder nicht.
    Um genau zu sein freut es mich zu sagen, dass es sich hierbei um ein neues Projekt handelt :)
    das alte bei dem du mich so gut unterstützt hast funktioniert ohne Probleme.

    In dem neuen Projekt geht es um automatisches vorbereiten und drucken von Dokumenten.
    Funktioniert soweit auch ganz gut, obwohl es schon ein gefummel ist,vor allem mit Word-Dokumenten.
    aber um zurück auf mein Problem zu kommen:
    Die suche dient im Prinzip nur dazu Abzufragen, ob es schon irgendwelche Daten von diesem Produkt gibt, was zu dem Zeitpunkt eigentlich nicht sein darf, aber dennoch mal vorkommt.
    Du könntest den Netzwerkpfad zum Windows Search Index hinzufügen und dann mittels Windows Search nach deinen Dokumenten suchen:
    msdn.microsoft.com/en-us/libra…(v=vs.85).aspx#qryidx_ado
    mit den Suchbaren Eigenschaften:
    msdn.microsoft.com/en-us/libra…op/bb419046(v=vs.85).aspx

    (Optional): Um Redundanz zu verhindern könntest du(falls es dir möglich ist) eine Serverapplikation schreiben, sodass nur ein System den Index abspeichert(Fall du die Möglichkeit hast diese Applikation direkt auf derm Server, welcher die Dateien enthält zu starten umso besser). Dann kannst du nur noch an deine Serverapplikation eine Anfrage schicken, welche mit einem Ergebnis antwortet:
    Multiserver (TCP)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    @ErfinderDesRades
    Genau, im Prinzip interessiert mich nur ob der Ordner mit dem Namen "Blubb" in irgendeinem Unterverzeichnis von z.b. "C:\" vorhanden ist.
    bisher habe ich es nur geschafft nach dem Ordnerinhalt zu suchen. Ich hoffe einfach, dass es wenn er nur die Verzeichnisstruktur durchsucht um einiges schneller geht.
    Ich habe mir das dann so zusammengereimt, dass man nur eine Auflistung der Verzeichnisstruktur hat und dort dann nach dem Ordnernamen gesucht wird.
    Der Ordner darf zu dem Zeitpunkt eigentlich nicht existieren, sondern wird erst mit einem neuen Aufbau angelegt.
    Ich wiederhole nochmal meine Frage an dich:

    ErfinderDesRades schrieb:

    Welche Argumente müsste man der Methode übergeben, dass sie weiß, wo was wie suchen?
    Ist die Frage unverständlich, dann sag das bitte.
    Ich nehme einfach an, du weißt, was mit "Methode", und "Argumente" gemeint ist, wissen tu ichs nicht, ob du das weißt.
    Nur wenn meine Fragen ignoriert werden - das frustet mich immer ganz schnell.

    also für ein zumindest oberflächliches Verständnis von Methode, Argument kannste auch hier nachlesen: Grundlagen: Fachbegriffe