Such-Engine im Eigenbau

AnalyseFile

Entsprechend wird das Ereignis AnalyseFile immer dann ausgelöst, wenn eine neue Datei auf die angegebenen Suchoptionen hin überprüft wird und das Ereignis NewFile, wenn eine geprüfte Datei allen angegebenen Suchoptionen entspricht. Beiden letztgenannten Ereignisprozeduren wird der Dateiname über den Parameter File und das zugehörige Informationsobjekt der Datei vom Typ FileSystemInfo über den Parameter FileInfo übergeben.

Event AnalyseFile(ByVal File As String, _
ByVal FileInfo As FileSystemInfo)
Event NewFile(ByVal File As String, _
ByVal FileInfo As FileSystemInfo)

© Archiv

Diagramm: Hier verfolgen Sie die Suchoptionen und -ereignisse zum benutzerdefinierten Suchobjekt.

Das File, wie die für eine Suche zu berücksichtigenden Dateikürzel, werden im Suchobjekt über die Eigenschaft Suffix verwaltet und bedarfsgerecht bei entsprechender Zuweisung intern korrigiert. Automatisierte Änderungen an der Suffix-Eigenschaft werden über das Ereignis SuffixChanged auch nach außen hin gemeldet.

Der zugeordneten Ereignisprozedur wird das geänderte Suffix als Parameter übergeben: Event SuffixChanged(ByVal Suffix As String). Über das Ereignis EntriesCounter wird die Anzahl der verarbeiteten Dateien und über das Ereignis FoundEntriesCounter die Anzahl der Treffer zurückgeliefert. Um möglichst viele Dateien intern zu verarbeiten, verwenden Sie für die übergebene Zählvariablen Nr den Datentyp Long.

Event EntriesCounter(ByVal Nr As Long)
Event FoundEntriesCounter(ByVal Nr As
Long)

Rekursive Dateisuche starten

Um eine Suche zu beginnen, verfügt das Suchobjekt über die Methode DoSearch. Diese übernimmt das über die Eigenschaft Start-Path gesetzte Startverzeichnis, setzt die Zählvariablen für die verarbeiteten (Entries) und gefundenen Dateien (FoundEntries) zurück und führt dann die verzeichnisorientierte Suche über die untergeordnete Methode DoFileSearch aus.

Der letztgenannten Methode übergeben Sie das Startverzeichnis der Suche per Parameter. Gesonderte Raise-Event-Anweisungen melden Start (SearchBegin) und Ende der Suche (SearchEnd) nach außen.

Sub DoSearch()
Dim sPath As String = Me.StartPath
Entries = 0: FoundEntries = 0
RaiseEvent SearchBegin()
DoFileSearch(StartPath)
RaiseEvent SearchEnd()
End Sub

© Archiv

501 Treffer: Sie sehen die Ausgabe der Ergebnisse im Dialog.

Die Suchfunktion selbst definiert die Methode DoFileSearch. Diese Funktion übernimmt das Ausgangsverzeichnis für die Dateisuche über den Parameter StartPath und ruft sich - sofern erforderlich - selbst rekursiv auf. Alle für das Suchobjekt definierten Eigenschaften berücksichtigen nach Bedarf alle grundlegenden Optionen. Die Methode ist als Private deklariert und entsprechend nicht öffentlich.

Die Suche startet in jedem Fall über die bereits beschriebene Methode DoSearch. Die Methode DoFileSearch legt zunächst eine Objektvariable vom Typ FileSystemInfo für das jeweils aktuell verarbeitete Verzeichnis an und initialisiert dieses. Dieses Objekt stellt untergeordnete Verzeichnisinformationen und -methoden bereit, die über das Ereignis NewPath bei jedem erneuten rekursiven Methodenaufruf veröffentlicht werden.

Nachdem das Startverzeichnis auf Existenz geprüft wurde, werden mit der Methode GetFiles des Objektes Directory zum angegebenen Verzeichnis alle darin enthaltenen Dateien ermittelt und per For-Each-Konstrukt verarbeitet. Die Überprüfung der Suchoptionen verantwortet dabei die Funktion CheckFile. Dieser wird das Startverzeichnis, die jeweils aktuelle Datei sowie ein dateispezifisches Objekt vom Typ FileSystemInfo übergeben.

Die Überwachung der Variablen Cancel gestattet es, die Dateisuche jederzeit zu beenden. Nachdem alle ermittelten Dateien des Verzeichnisses verarbeitet sind, werden - sofern die Eigenschaft AnalyseSubDirectories auf True gesetzt wurde - alle Unterverzeichnisse durchlaufen. Die Unterverzeichnisse selbst errmittelt die Methode GetDirectories des Objektes Directory und verarbeitet diese per For Each-Konstrukt.

Für jedes untergeordnete Verzeichnis wird die Dateisuche durch den rekursiven Aufruf der Methode DoFileSearch unter Angabe des untergeordneten Verzeichnisses fortgesetzt. Auch hier sorgt die Kontrolle der Variablen Cancel mitunter für einen vorzeitigen Abbruch der Suchfunktion. Die Methode ist in der mitgelieferten Klassendatei FileSearchObj.vb (Heft-DVD) enthalten.

Private Sub DoFileSearch
(ByVal StartPath As String)
Dim dInfo As FileSystemInfo =
New DirectoryInfo(StartPath)...

Mehr zum Thema

HTML 5
Webgestaltung

Google Web Designer ist spezialisiert auf HTML5. Ein Vorteil dieses Standards ist das einfache Einbinden von Videos mit dem Element video. Wir zeigen…
Wir verraten, wie Sie Fritzboxen und andere Router vor Hackern schützen.
Fritzbox, Asus, Belkin und Co.

Fritzbox, Asus, Belkin oder DLink - die Liste der geknackten Router ist lang. Hacker stahlen Passwörter oder NAS-Daten. So machen Sie Ihren Router…
Wir führen Sie zur eigenen Windows-App - unserem PC-Magazin-RSS-Feed.
C# und XAML

Wir zeigen, wie Sie Windows 8.1 Apps selbst programmieren können. Lernen Sie das App erstellen an Hand unseres Beispiels: dem RSS-Feed von PC…
Windows Tipps & Tricks: Benutzerrechte unter Windows 8.1
Programme richtig installieren

Wir zeigen Ihnen, wie Sie sich unter Windows 8.1 alle Benutzerrechte verschaffen und Programme richtig installieren.
Windows 8: Starbildschirm
Microsoft Project Siena

Erstellen Sie sich selbst eine App für Windows 8, die auf alle Funktionen Ihres Tablets zugreifen kann, inklusive Kamera, Mikrofon und Lautsprecher.…