Such-Engine im Eigenbau
Reihe: Such-Engine im Eigenbau für die eigene Homepage - Teil 2
Nachdem Sie im ersten Teil des Workshops die Suchoptionen allgemein und benutzerdefiniert bestimmten, widmen Sie sich der Suche. Diese soll alle Ergebnisse ereignisorientiert zurückliefern und damit einfach in Anwendungsprogramme einzubinden sein.
- Reihe: Such-Engine im Eigenbau für die eigene Homepage - Teil 2
- AnalyseFile
- Dateien auf Gleichheit prüfen

Als erstes haben Sie [int:article,125077]in dieser Programmierserie die Suchoptionen definiert[/int]. Jetzt setzt der Beitrag eine ereignisbasierte Suchfunktion um. Im letzten Teil erhalten Sie dann die gebrauchsfertige universelle Suchfunktion mit Dialog.Denn aktuelle Windows-Betriebssysteme suchen nicht mehr per Dialog und verfügen auch nicht mehr direkt über eine Suchfunktion im Startmenü. Stattdessen ist die Suche fest in den Windows Explorer über ein einfaches Textfeld integriert.
Wollen Sie eine flexible Suche in eigene Anwendungen einbauen und die Suchoptionen im Detail bestimmen, dann entwickeln Sie selbst dafür eine Maschine. Wie Sie die Suchoptionen definieren, wurde bereits im ersten Beitrag gezeigt. Darauf aufbauend definieren Sie Hilfsvariablen und Ereignisse, über die Suchergebnisse zurückgeliefert werden und damit in beliebigen Anwendungen verarbeitbar sind.
Hilfsvariablen, Ereignisse
Um die Verarbeitung einer Suche vorzeitig abzubrechen, sowie den Stand der Verarbeitung zu überwachen, deklarieren Sie die Hilfsvariablen Cancel, FoundEntries und Entries. Die Variable Cancel vom Typ Boolean gibt an, ob eine laufende Suche abzubrechen ist und ist standardmäßig auf den Wert False gesetzt. Entries ist eine Zählvariable für die bereits verarbeiteten Dateien und FoundEntries eine Zählvariable für die bereits gefundenen Dateien. Beide Zählvariablen sind zunächst auf den Wert Null gesetzt.
Dim Cancel As Boolean = False
Dim FoundEntries As Long = 0
Dim Entries As Long = 0

Das benutzerdefinierte Suchobjekt, das die Klasse FileSearchObj definiert, liefert alle Informationen zur internen Verarbeitung mitsamt den Trefferinformationen über Ereignisse zurück. Verwenden Sie das Suchobjekt, entscheiden Sie selbst, ob Sie die Trefferinformationen direkt weiter verarbeiten, in einem Dialog aufbereiten oder aber intern für weitere Verarbeitungen speichern.
Um Informationen und Zwischenergebnisse über Ereignisse zurückzuliefern, definieren Sie das dafür Erforderliche mit mehreren Event-Anweisungen. Das Ereignis SearchBegin wird beim Start einer Suche und das Ereignis SearchEnd nach Abschluss einer Suche ausgelöst.
Event SearchBegin()
Event SearchEnd()
Verarbeitet das Programm ein neues Datenverzeichnis, löst es das Ereignis NewPath aus. Die zugehörige Ereignisprozedur bekommt den Verzeichnisnamen über den Parameter Path im Zeichenkettenformat übergeben.
Der zusätzliche Parameter PathInfo übergibt das Verzeichnis als Typ FileSystemInfo, über den alle untergeordneten Verzeichnisinformationen wie Datum, Attribute, Existenz und zugehörigen Methoden wie zu Löschen direkt abrufbar sind: Event NewPath(ByVal Path As String, ByVal PathInfo As FileSystemInfo).