Bild vergrößern
937
562
http://img2.magnus.de/Suche-Menschen-Massen-Leute-r937x562-C-e333c9a1-29339133.jpg
So geht's
Reihe: Such-Engine im Eigenbau Teil 3: Benutzerdediniertes Suchobjekt
Um Dateien und deren Ordner zu finden, bestimmen Sie die Suchoptionen und starten dann die Suche. Das benutzerdefinierte Suchobjekt liefert alle Informationen und Ergebnisse über Ereignisse zurück. Diese werten Sie über beliebige Dialoge aus.
Middle1
Das allgemeine, benutzerdefinierte Suchobjekt FileSearchObj, das Sie in den ersten beiden Teilen dieser Serie (PDF-Dateien auf der Heft-DVD) grundlegend entwickelt haben, verrichtet seine Arbeit im Hintergrund und tritt nicht sichtbar in Erscheinung. Die Suchoptionen weisen Sie auf Quelltextebene zu. Die Ergebnisse werden über Ereignisse zurückgeliefert.
Dies hat den Vorteil, dass Sie das Suchobjekt nicht nur universell einsetzen, sondern auch an beliebige Dialoge binden können. Über diese Dialoge legen Sie die gewünschten Sucheigenschaften offen und definieren und variieren diese nach Bedarf. Entsprechend lassen sich die Ergebnisse über beliebige Dialoge offenlegen.
Suchoptionen und Ergebnisse fassen Sie wahlweise in einzelnen Dialogen zusammen oder teilen diese in mehrere Dialoge auf. Optional lassen sich die Suchoptionen und Ergebnisse auch in bereits vorhandene Dialoge Ihrer Anwendung integrieren. An dieser Stelle wird gezeigt, wie Sie generell vorgehen, um
Vorgehen
- Suchoptionen für das Suchobjekt zu definieren und zu übergeben,
- die Suche zu starten und zu überwachen sowie
- die Suchergebnisse auszuwerten und anzuzeigen.
Weitere Prüffunktionen erläutern, wie Sie Suchoptionen generell verarbeiten. Den vollständigen Quelltext zur Lösung finden Sie samt ausführbarem Beispielprogramm auf der Heft-DVD.
Dateikürzel, -namen, -attribute
Die Funktion HasCorrectSuffix prüft, ob eine angegebene Datei ein Dateikürzel aufweist, das mit dem übereinstimmt, welches die Eigenschaft Suffix festgelegt hat. Ist Suffix auf "*.*" gesetzt, gelten alle Dateikürzel und die Funktion liefert den Wert True zurück. Definieren Sie eine andere Zeichenkette für die Eigenschaft Suffix, so prüft das Programm, ob darin das Dateikürzel der aktuell verarbeiteten Datei enthalten ist.
Ist das der Fall, liefert die Funktion den Wert True an das aufrufende Programm zurück. Ordnen Sie der Eigenschaft Suffix hingegen eine leere Zeichenkette zu, so bedeutet das, dass gefundene Dateien kein Dateikürzel aufweisen dürfen. Nur dann wird der Wert True an das aufrufende Programm übergeben. Die zu prüfende Datei wird der Funktion HasCorrectInfo als Objekt des Typs FileInfo übergeben.
Codebeispiel:
Function HasCorrectSuffix
(ByVal fi As FileInfo) As Boolean...
Ob eine Datei einem exakt angegebenen Dateinamen oder einem Teildateinamen entspricht, ermittelt die benutzerdefinierte Funktion HasCorrectName mit den Eigenschaften FileName und FileNameIsPartial. Wird ein exakter Dateiname gesucht und ist FileNameIsPartial entsprechend auf False gesetzt, so hat der aktuelle Dateiname (fi.Name) mit der FileName-Eigenschaft übereinzustimmen.
Wird nach einem Teil eines Dateinamens gesucht, dann ist die Teilzeichenkette FileName Bestandteil des geprüften Dateinamens. Dies prüfen Sie mit der Standardfunktion Instr. Um beim Dateinamensvergleich nicht zwischen Groß- und Kleinschreibung zu unterscheiden, konvertieren Sie die zu vergleichenden Zeichenketten jeweils vor dem Vergleich mit der Funktion LCase in Kleinschrift.
Codebeispiel:
Function HasCorrectName(ByVal fi As File
Info) As Boolean ...
Das Suchobjekt verwaltet alle Dateiattribute über spezifische Buchstabenbezeichner. Diese werden zu einer aktuellen Datei über die Funktion HasCorrectAttributes unter Verwendung der Eigenschaft Attributes im Detail geprüft. Vor der Auswertung wird die Zeichenkette, die der Eigenschaft Attributes zugewiesen wurde, in Großschrift umgewandelt.
Das sorgt dafür, dass es keine Rolle spielt, ob Sie Attribute mit Klein- oder Großschrift festlegen. Die Prüfung erfolgt anschließend für jedes einzelne Attribut getrennt, aber im Aufbau synonym. Es wird für jedes Attribut kontrolliert, ob es über die Eigenschaft Attributes als auszuwertendes Attribut festgelegt wurde. Nur dann wird geprüft, ob auch das entsprechende Dateiattribut gesetzt ist.
Ist dies nicht der Fall, wird die Funktion unmittelbar mit dem Rückgabewert False beendet. Nur wenn alle geprüften Attribute gesetzt sind, liefert auch die Funktion das Ergebnis True an das aufrufende Programm zurück.
Codebeispiel:
Function HasCorrectAttributes
(ByVal fi As FileInfo) As Boolean...