Praxiseinsatz, Initialisierung, Suchen
- Reihe: Such-Engine im Eigenbau Teil 3: Benutzerdediniertes Suchobjekt
- Datumsstempel, Wortlisten
- Praxiseinsatz, Initialisierung, Suchen
- Vielfältige Überwachung
Praxiseinsatz, Initialisierung, Suchen

© Archiv
Nachdem damit das allgemeine Suchobjekt vollständig definiert ist, testen Sie es zunächst in einer einfachen Windows-Anwendung. Diese definiert grundlegende Suchoptionen auf Quelltextebene, sucht dann die Dateien entsprechend diesen Suchoptionen und gibt das Suchergebnis über einen einfachen Windows-Dialog aus.
Das Beispielprojekt heißt FileSearchDemo, welches Sie über die gleichnamige Solutiondatei in die Entwicklungsumgebung von Visual Studio laden. Im Beispielprojekt finden Sie die Klasse FileSearchObj, über die das allgemeine Suchobjekt definiert ist sowie die Formularklasse frmDemo, die den eigentlichen Ausgabedialog definiert.
Der Ausgabedialog enthält drei Listenfelder, welche die allgemeinen Informationen, die aktuell verarbeiteten Dateien sowie die nach den Suchoptionen gefundenen Dateien aufnehmen. Über gesonderte Bezeichnungsfelder im unteren Bereich des Dialogfeldes werden die Anzahl der verarbeiteten Dateien sowie die Anzahl der gefundenen Dateien ausgegeben.
Die Initialisierung des Suchobjektes erfolgt beim Laden des Ausgabedialoges über die Ereignisprozedur Form1_Load. Darüber wird zunächst ein neues Suchobjekt vom Typ FileSearchObj instanziert und der zugehörige Objektverweis in der Variablen obj gesichert.
Um auf die Ereignisse des Suchobjektes zu reagieren, werden die objektspezifischen Ereignisbehandlungsroutinen mit AddHandler-Anweisungen sowie dem AddressOf-Operator auf entsprechende Prozeduren der Formulardatei umgeleitet. Um die Bezüge einfach herzustellen, wurden die Prozedurnamen der Ereignisse im Suchobjekt und in der Formulardatei einheitlich benannt.
Private Sub Form1_Load _ (ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load Dim obj As New FileSearchObj AddHandler obj.AnalyseFile, AddressOf AnalyseFile AddHandler obj.NewFile, AddressOf NewFile AddHandler obj.NewPath, AddressOf NewPath AddHandler obj.SearchBegin, AddressOf SearchBegin AddHandler obj.SearchEnd, AddressOf SearchEnd AddHandler obj.SuffixChanged, AddressOf SuffixChanged AddHandler obj.FoundEntriesCounter, AddressOf FoundEntriesCounter AddHandler obj.EntriesCounter, AddressOf EntriesCounter

© Archiv
Sind die Ereignisbehandlungsroutinen zugewiesen, bestimmen Sie über die Eigenschaften des Suchobjektes die Suchoptionen. Das Beispiel sucht nach Textdokumenten mit den Dateikürzeln doc, txt und log, wobei die rekursive Suche im Wurzelverzeichnis von Laufwerk C:\ beginnt.
Auf Vorgaben für Dateinamen, Dateigrößen, Dateiattribute und Datumsstempel verzichtet das Beispiel ebenso wie auf die Suche nach in den Dateien enthaltenen Wörtern oder Wortlisten. Doch diese Eigenschaften lassen sich manuell bearbeiten und nach Bedarf definieren.
Um die Verarbeitungsdauer einzuschränken, beschränkt das Beispiel die Anzahl der maximal zurückzuliefernden Dateien, die den angegebenen Suchkriterien entsprechen, auf den Wert 1000. Die Suche startet dann über die Methode DoSearch des Suchobjektes. Die letztgenannte Methode liefert die Ergebnisse sowie Informationen ereignisorientiert zurück.
... With obj .StartPath = "C:\" .Suffix = "doc|txt|log" ,"*.*" .AnalyseSubDirectories = True .FileName = "" .FileNameIsPartial = True .MinSize = -1 .MaxSize = -1 .Attributes = "" .TimeAnalysis = FileSearchObj.eTimeStampType.None .Day = 0 .Month = 0 .Year = 0 .LookForWords = False .DifferenceByUpperLower = False .WordList = "" .MaxEntries = 1000 .DoSearch() End With ...
Ist die Dateisuche abgeschlossen, werden die Verbindungen zu den Ereignisbehandlungsroutinen des Suchobjektes wieder gelöst.
... RemoveHandler obj.AnalyseFile, AddressOf AnalyseFile RemoveHandler obj.NewFile, AddressOf NewFile RemoveHandler obj.NewPath, AddressOf NewPath RemoveHandler obj.SearchBegin, AddressOf SearchBegin RemoveHandler obj.SearchEnd, AddressOf SearchEnd RemoveHandler obj.SuffixChanged, AddressOf SuffixChanged RemoveHandler obj.FoundEntriesCounter, AddressOf _ FoundEntriesCounter RemoveHandler obj.EntriesCounter, AddressOf EntriesCounter End Sub