Hi Leute,
Hier habe ich zur Ansicht und Basteln ein Schlagwortsuche-Programm. Es eignet sich am besten, wenn damit häufiger bestimmte Verzeichnisse durchsucht werden, da bei der ersten Suche ein SQLite-Datenbank angelegt wird und bei weiteren Suchen nur neue oder geänderte Dateien eingelesen werden.
Office muss nicht unbedingt installiert sein. Ich habe ich intensiv bei anderen bedient, die diese Dateien mit String-Operationen auslesen. Im Quelltext findet ihr neben dem Funktionsstart die URL zum ursprünglichen Thread. Nur bei die xls Auslesen mit ADODB habe ich mir mehr Mühe geben müssen. Für PDF wird neben einer UDF noch eine externe Exe verwendet.
Ich habe das Skript kommentiert, damit man es etwas nachvollziehen kann. Zum Überblick noch grundsätzlich zum Aufbau:
Am besten erst einmal die Ordner einklappen. Dann sieht man, dass die Funktionen thematisch blockweise angeordnet sind.
- Zuerst kommen die Deklarationen und die verwendeten Fenster.
- Dann die Schleife, in der die Controls überwacht werden.
- Dann die zentrale Suche, die nach einem Klick auf suchen aufgerufen wird (_SearchAndProgress)
(Hier wird das Verzeichnis ausgelesen und je nach Dateityp die entsprechende Funktion aufgerufen, so die Datei nicht schon in der DB ist).
- Dann kommen die _GetContent_XXX Funktionen. Diese Funktionen werden bei der Suche aufgerufen und wenn man im Hauptfenster
eine Datei anklickt um sie anzuzeigen.
(Hier werden nur die entsprechenden Funktionen aufgerufen und teilweise bei möglichen Fehlern doch die Excel oder Word UDF aufgerufen wenn möglich).
- Dann kommen die Funktionen zum eigentlichen Auslesen der Dateitypen.
- Danach kommen die beiden Funktionen, in denen die beiden GUIs für Tabellen und Texte vorbereitet werden.
- Dann kommt der Block mit den GUI-Events
(_WM_NOTIFY für die Klicks in die Listviews, _WM_SIZE für die Anpassung von best. Controls an die neue Größe _EndSize für die Reaktion auf beendetes Ändern der GUI-Größe und _WM_GETMINMAXINFO für das Sicherstellen bestimmter Mindestgrößen der einzelnen Fenster.)
- Schließlich Verwaltungsfunktionen für Dateifilter, Includes, SQLite-Start usw.
Im Verzeichnis findet sich das Skript "Textsuche.au3", ein Ordner mit den Includes und ein Ordner mit Beispieldateien (Einfache Vorlagen - sinnvoll testen kann man es wohl nur, wenn man selbst Ordner mit möglichst vielen Text- und Exceldateien hat.)
(zuerst hieß das Skript "Schlagwortsuche.au3". Nun heißt es "Textsuche.au3")
____________________________________
In der angehängten Version, der ich die Versionsnummer 2 gegeben habe, wurden die Filtern von Arrays auf Dictionaries geändert. Die tolle Anregung kam von @Zeitriss und ich möchte mich hier noch einmal dafür bedanken
Der Geschwindigkeitsgewinn - vor allem bei wiederholten Suchen - ist enorm!
Zum Vergleich habe ich auch die letzte Version mit Arrays in dem Paket, mit der ihr das testen könnt.
Die Dictionaries werden vor allem in den Funktionen _SQLiteStartup, _FileList und _SearchAndProgress verwandt.