Such-Engine im Eigenbau
Dateien auf Gleichheit prüfen
- Reihe: Such-Engine im Eigenbau für die eigene Homepage - Teil 2
- AnalyseFile
- Dateien auf Gleichheit prüfen
Dateien auf Gleichheit prüfen

Die Funktion CheckFile prüft die Suchoptionen für eine bestimmte Datei. Die Funktion erhält das Dateiverzeichnis über den Parameter StartPath, den Dateinamen samt Suchpfad über den Parameter dFile sowie das zugehörige FileInfo-Objekt zur Datei über den Parameter fi. Innerhalb der Funktion wird zunächst die Aufrufanzahl mitgezählt und in der Variablen Entries gesichert.
Die Aufrufanzahl der Funktion ist identisch mit der Anzahl der aktuell verarbeiteten Dateien. Das Ereignis EntriesCounter hält den Wert fest. Ferner werden die Informationen zur aktuell verarbeiteten Datei mithilfe des Ereignisses AnalyseFile veröffentlicht.
Untergeordnete Funktionen mit dem Prefix Has prüfen eine aktuelle Datei über das zugehörige FileInfo-Objekt auf die vorgebenene Dateigröße (HasCorrectSize), ein korrektes Kürzel (HasCorrectSuffix), den vorgegebenen Dateinamen (HasCorrectName), die erforderlichen Dateiattribute (HasCorrectAttributes), die gewünschten Datumsinformationen (HasCorrectTimeStamp) und erforderliche Wortinhalte (HasCorrectSearchedWords).
Jede dieser Prüffunktionen liefert das Ergebnis jeweils als Wahrheitswert an die aufrufende Funktion CheckFile zurück. Liefert eine Teilfunktion den Wert False zurück, wird die verarbeitete Datei nicht in die Trefferliste aufgenommen und die weitere Verarbeitung unmittelbar abgebrochen.
Werden alle Suchoptionen erfüllt und liefern entsprechend alle Prüffunktionen den Wert True zurück, dann wird die Anzahl der gefundenen Treffer über die Variable FoundEntries erhöht und über das Ereignis FoundEntriesCounter veröffentlicht. Entsprechend wird auch die gefundene Datei über das Ereignis NewFile nach außen hin bekannt gemacht.
Die Anzahl der gefundenen Dateien wird anschließend in Bezug zur Eigenschaft MaxEntries gesetzt. Dies sorgt mitunter dafür, dass die Variable Cancel auf True gesetzt und einhergehend damit die Suche vorzeitig beendet wird.
Private Sub CheckFile
(ByVal StartPath As String, ByVal dFile As String, ByVal fi As FileInfo)
Entries = Entries + 1
RaiseEvent EntriesCounter(Entries)
RaiseEvent AnalyseFile(dFile, fi)
Try
If Not HasCorrectSize(fi)
Then Exit Sub
If Not HasCorrectSuffix(fi)
Then Exit Sub.....
...If Not HasCorrectTimeStamp(fi)
Then Exit Sub
If Not HasCorrectSearchedWords(fi)
Then Exit Sub
Catch ex As Exception
MsgBox(ex.Message)
End Try
FoundEntries = FoundEntries + 1
RaiseEvent FoundEntriesCounter
(FoundEntries)
RaiseEvent NewFile(dFile, fi)
If Me.MaxEntries > 0 Then
If FoundEntries >=
MaxEntries Then
Cancel = True
End If
End If
End Sub
Die eigentlichen Prüffunktionen werten die dateispezifischen Informationen aus, die über den Parameter fi vom Typ FileInfo übergeben werden. Sie werden einheitlich mit den zuvor gesetzten und zugeordneten Sucheigenschaften verglichen.
Als Ergebnis liefern alle Prüffunktionen einen Wahrheitswert zurück, der angibt, ob die angegebenen Suchoptionen mit den entsprechenden Dateieigenschaften übereinstimmen (True) oder nicht (False). Mithilfe der per RaiseEvent ausgelösten Ereignisse lassen sich die Suchergebnisse später direkt im Dialog ausgeben.
Dateigrößen prüfen
Die benutzerdefinierte Funktion HasCorrectSize prüft, ob die geforderte Dateigröße, die über die Eigenschaften MinSize und MaxSize festgelegt werden kann, mit der aktuellen Dateigröße übereinstimmt. Wird die Mindestdateigröße nicht erreicht oder aber die maximale Dateigröße überschritten, so liefert die Funktion das Ergebnis False an das aufrufende Programm zurück.
Function HasCorrectSize(ByVal fi As File
Info) As Boolean
If MinSize > -1 And MinSize > fi.Length
Then
Return False
End If
If MaxSize > -1 And MaxSize < fi.Length
Then
Return False
End If
Return True
End Function
Wie Sie Dateikürzel, Dateinamen, Dateiattribute, vorhandene Datumsstempel sowie Wortlisten bei der Suche auf Übereinstimmung mit angegebenen Suchoptionen prüfen und die Suche an Dialoge für die Ausgabe binden sowie die definierten Ereignisse praktisch verarbeiten, zeigt der letzten Teil. Bleiben Sie also am Ball, es lohnt sich!