| Autor |
Beitrag |
Pepe
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Do 24.11.05 18:06
Hi,
manch einer mag sie kennen, die dbtools unter linux, welche das datei system in eine db einlesen und man so schnell einfach dateien findet.
Da ich soetwas auch gerne für windows haben wollte, habe ich dieses kleine tool geschrieben, welches alle dateien in eine db einliest und diese dann speichert (dateiname: dbtools.db). Man kann angeben, welche laufwerke oder ordner (auch netzlaufwerke) übernommen werden sollen und dann einlesen (es werden hierbei alle dateinamen mit zugehörigem pfad in der datenbank gespeichert) und danach kann man schnell und einfach die dateien suchen.
Die laufwerke werden im entsprechenden edit durch ein komma getrennt eingetragen.
zum einlesen auf Scan Drives klicken und zu suchen auf search.
Ich denke ich hab soweit nichts vergessen, viel spaß beim testen, würde mich über feedback freuen
Neu: Die Verarbeitung von logischen Such-Ausdrücken ist nun auch möglich! die Funktionen hierzu habe ich auch hier veröffentlicht: www.delphi-forum.de/...hAnfragen_54140.html
In der nächsten Version soll es auch ein komplett neu überarbeitetest Design geben, da ich dieses ein wenig spartanisch und unübersichtlich finde!
Links:
projektseite: www.ew-projects.de/project.php?id=15
download client (auch eigenständig benutzbar): www.ew-projects.de/download.php?id=15
download server:
www.ew-projects.de/download.php?id=16
so long
Pepe
--------------------------------------------------
Version 1.4.1.1 - 12.01.2006 - beta
--------------------------------------------------
Changed : Design überarbeitet
Fixed : Bug in der logischen Suche behoben
Added : Server Software
Added : Ordner-Management
Added : Einstellungen speichern
Fixed : Liste wird resettet bei neuer Suche
Fixed : Netz-Suche: Auflistung korrigiert
Added : dbtn: Requests- und Counterreset
Fixed : Routing korrigiert
Added : Server in die Tray
--------------------------------------------------
Version 1.4.1.0 - 10.01.2006 - stable
--------------------------------------------------
Changed : Logische Such-Anfragen ermöglicht
--------------------------------------------------
Version 1.4.0.9 - 05.01.2006 - stable
--------------------------------------------------
Fixed : Wildcard Suche gefixed
Changed : Datei Beschreibung geändert
--------------------------------------------------
Version 1.4.0.8 - 31.12.2005 - stable
--------------------------------------------------
Changed : Suche mit Wildcards (* = Wildcard)
--------------------------------------------------
Version 1.4.0.7 - 20.12.2005 - stable
--------------------------------------------------
Added : Resize
Added : Verlauf
Added : Scan Timer
Added : Gleichnahmige Dateien suchen
--------------------------------------------------
Version 1.4.0.6 - 6.12.2005 - stable
--------------------------------------------------
Changed : Tooltip ändern
Changed : Abbrech-Funktion bei scandrives
--------------------------------------------------
Version 1.4.0.5 - 25.11.2005 - stable
--------------------------------------------------
Added : Übergeordneten Ordner öffnen
Zuletzt bearbeitet von Pepe am Do 09.02.06 23:29, insgesamt 11-mal bearbeitet
|
|
maupity
Hält's aus hier
Beiträge: 2
|
Verfasst: Mi 30.11.05 02:35
Habe dein Programm getestet, ist genau das was ich brauche/suche!!!
Ich frage mich schon länger ob es nicht was besseres gibt als die original Windossuche. Habe eine 80 Gb festplatte, fast voll, aaalso hab ich das grad mal getestet: Windowssuche - 42 Sekunden!!!, dbtools scan drives - unter 10 Sekunden, und die tatsächliche Suchzeit konnte ich gar nicht messen, Daumen zu langsam!
Da hat man zeit sich mit der auswertung der Sucheergebnisse zu beschäftigen und nicht mit Kaffee holen, weil eh erstmal nichts passiert;-).
Ausserdem zeigt mir dbtools anscheinend alles an was den Suchbegriff enthält, sehr gut! (windows - 13 ergebnisse, dbtools - 135!).
Ich glaub dbtools wird mich noch länger begleiten, klasse idee, klasse program!!!
Meine Gedanken im Einzelnen:
+Geschwindigkeit unschlagbar (unglaublich?)
+systray ist für mich optimal
+copy&paste geht, super
+das es da ist und ich es gefunden habe
-das untere fenster macht irgendwie keinen rechten Sinn, es ist zum einen zu klein als das man darin navigieren könnte und zum anderen hat man doch in der regel ALLE Dateien da drin, das erfordert dann eine ruhige Hand den minibalken richtig anzuhalten
-das gute an der windowssuche ist das öffnen des übergeordneten Fensters, find ich wichtig
-gut wäre eine möglichkeit die suche zu begrenzen (zum beispiel: suchbegriff darf nicht Teil des gefunden Wortes, sein sondern muss allein stehen)
-Grösse der Fenster (der Weissen) muss veränderbar sein, das graue aussenfenster lässt sich vergrössern (warum?), bringt aber leider nichts
-interressant wäre auch die Laufwerkauswahl speicherbar zu machen (Button? Profile? vllt sogar profile, die an bestimmte suchbegriffe automatisch gekoppelt sind. also z.B. .mp3 als Suchbegriff dursucht standardmäßig vorher definierte Ordner, Laufwerke)
-Suchbegriffe sollten automatisch abgespeichert werden
-denkbar wäre auch eine Speicherfunktion für Playlisten
Abschliessend würd mich interessieren wozu die Dateitypen angegebn sind (unveränderbar?).
Und noch ein Gedanken: ist die Textgrösse änderbar? Habe einen zweiten Rechner am TV, unter 12 wirds da echt augenfeindlich.
das wäre dann mein wunschprogramm  ich würd mich freuen wenn du weitere Verbesserungen hier vostellen kannst.
Hat sonst keiner hier das Tool getestet??
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 30.11.05 03:05
Warum ist das Edit mit den Dateitypen und der Checkbox deaktiviert?
Warum gehen Wildcards nicht?
Warum hat das TNA Icon den Tooltip "Tooltip"?
Warum sind die Laufwerke d: und c: vorgegeben und auch noch in dieser komischen Reihenfolge?
Wäre eine Checklistbox mit den vorhandenen Laufwerken nicht sinnvoller?
Die Datenbank wird im Anwendungsverzeichnis gespeichert. Siehe dazu hier: www.luckie-online.de...rtikel/HOMEDIR.shtml
Ich kann auf den Button klicken, wenn er mit "Working..." beschriftet ist. Ich weiß aber nicht, was er dann macht. Warum steht da nicht "Abbrechen" drauf und man kann mit ihm die Suche abbrechen.
Und von einer Datenbank zu sprechen finde ich reichlich übertrieben. Hand und Fuß macht es erst, wenn man eine Volltextsuche machen und die Dateien kategorisieren kann. Und dann brauchst du eine richtige Datenbank um das flott zu machen.
Das einzige Beeindruckende ist die schnelle Suche. Gibt es den Code dazu irgendwo?
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Mi 30.11.05 15:53
also, mom, jetzt erstmal alle fragen ordnen
also datebank ist übertrieben der begriff, klar, da es im prinzip nur eine liste mit allen dateien ist.
erfüllt aber seinen zweck
| Zitat: | | -das untere fenster macht irgendwie keinen rechten Sinn, es ist zum einen zu klein als das man darin navigieren könnte und zum anderen hat man doch in der regel ALLE Dateien da drin, das erfordert dann eine ruhige Hand den minibalken richtig anzuhalten |
das ist auch einfach nur zur übersichtlichkeit da, da ich gern weiß mit welchen daten gearbeitet wird bzw. in erster linie war es zum testen, ob auch wirklich alle dateien eingelesen werden, lässt sich aber noch ändern...
| Zitat: | | -das gute an der windowssuche ist das öffnen des übergeordneten Fensters, find ich wichtig |
werd ich hinzufügen
| Zitat: | | -gut wäre eine möglichkeit die suche zu begrenzen (zum beispiel: suchbegriff darf nicht Teil des gefunden Wortes, sein sondern muss allein stehen) |
kann ich mir noch nichts richtiges drunter vorstellen... meinst du, das der suchbegriff im kontext verschiedene bedingungen erfüllen muss?
| Zitat: | | -Grösse der Fenster (der Weissen) muss veränderbar sein, das graue aussenfenster lässt sich vergrössern (warum?), bringt aber leider nichts |
hab mich mit resize noch garnicht beschäftig, mir kam's in erster linie auf den such-algorythmus an
werd ich aber nachholen
| Zitat: | | -Suchbegriffe sollten automatisch abgespeichert werden |
so eine art verlauf wie beim browser?
| Zitat: | | -denkbar wäre auch eine Speicherfunktion für Playlisten |
könnte man überlegen, wollte mich aber eigentlich auf die suche von dateien konzentrieren
so, jetzt zu luckie
| Zitat: | | Warum ist das Edit mit den Dateitypen und der Checkbox deaktiviert? |
ich hatte in einer der vorherigen versionen die möglichkeit die dort angegeben dateitypen auch noch nach dem suchbegriff zu durchforsten (also text dateien logfiles etc.), hab dann aber der den algorythmus komplett überarbeitet, um ihn schneller zu machen, und diese funktion noch nicht wieder implementiert...
| Zitat: | | Warum gehen Wildcards nicht? |
hab ich so noch garnicht drüber nach gedacht, da ich wildcards zum suchen von dateien eigentlich bisher immer nur brauchte um einen bestimmten typ von dateien zu finden und ich das hier auch mit ".mp3" z.b. machen konnte... muss mal gucken, wie ich das noch implementieren könnte, will nit das die geschwindigkeit drunter leidet
| Zitat: |
Warum hat das TNA Icon den Tooltip "Tooltip"?
|
ganz ehrlich? hab mir die besipiel funktion von ds genommen, sie implementiert und so gelassen
wird geändert...
| Zitat: | Warum sind die Laufwerke d: und c: vorgegeben und auch noch in dieser komischen Reihenfolge?
Wäre eine Checklistbox mit den vorhandenen Laufwerken nicht sinnvoller? |
kommt
d und c, ganz einfach, hab es bei mir hier immer getestet und da ich zu faul war immer meine laufwerke einzutragen, hab ich die halt als standart gesetzt, d einfach als erstes, da es meine daten partition ist... wird geändert, hab ich garnicht mehr dran gedacht... ^^
mal in ruhe lesen nacher...
| Zitat: | | Ich kann auf den Button klicken, wenn er mit "Working..." beschriftet ist. Ich weiß aber nicht, was er dann macht. Warum steht da nicht "Abbrechen" drauf und man kann mit ihm die Suche abbrechen. |
änder ich bis zur nächsten version...
| Zitat: | | Und von einer Datenbank zu sprechen finde ich reichlich übertrieben. Hand und Fuß macht es erst, wenn man eine Volltextsuche machen und die Dateien kategorisieren kann. Und dann brauchst du eine richtige Datenbank um das flott zu machen. |
siehe oben
| Zitat: | | Das einzige Beeindruckende ist die schnelle Suche. Gibt es den Code dazu irgendwo? |
es wurde bis jetzt eigentlich auch nur dazu geschrieben um zu gucken, wie man ein suchverfahren optimieren kann
danke für das lob für den algorythmus schonmla !!!
den code so nicht, zumindest für's erste, finde er ist noch nicht ausgereift genug um ihn vorzustellen...
er basiert darauf, das die datei liste in verschiedene gruppen zerlegt wird... es wir als erstes geguckt, ob das word überhaupt vorkommt, dann in etwas kleineren schritten und so weiter... so das ich möglichst wenige zeilen der dateiliste einzelnd durchsuchen muss...
so, dann werd ich mich mal an die verbesserungen machen 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 30.11.05 16:51
Pepe hat folgendes geschrieben: |
er basiert darauf, das die datei liste in verschiedene gruppen zerlegt wird... es wir als erstes geguckt, ob das word überhaupt vorkommt, dann in etwas kleineren schritten und so weiter... so das ich möglichst wenige zeilen der dateiliste einzelnd durchsuchen muss...
|
Ich meinte eigentlich die Suche nach den Dateien auf der Festplatte, der ist sehr schnell. Und das würde mich interessieren. Wie du die Datei in der Textdatei findest interessiert mich erstmal nicht. 
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Mi 30.11.05 18:10
achso, dafür hab ich mir nen thread zusammen gebastelt:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137:
| unit scandirs_t;
interface
uses Classes, Windows, SysUtils, StdCtrls;
type TStringDynArray = array of string;
type scandirs = class(TThread) private drs : String; memFiles : TMemo; drives : TStringDynArray; dList : TStringList; protected procedure Execute; override; procedure UpdateList; public constructor Create(dr : String; memF : TMemo); end;
implementation
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen);
Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := StrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end;
procedure GetFilesInDirectory(ADirectory: string; AMask: String; AList: TStrings; ARekursiv: Boolean); var SR: TSearchRec; begin if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then ADirectory:=ADirectory+'\';
if (FindFirst(ADirectory+AMask,faAnyFile-faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') and (SR.Attr<>faDirectory) then AList.Add(ADirectory+SR.Name) until FindNext(SR)<>0; end;
if ARekursiv then if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') then GetFilesInDirectory(ADirectory+SR.Name,AMask,AList,True); until FindNext(SR)<>0; end; FindClose(SR); end;
constructor scandirs.Create(dr : String; memF : TMemo); begin memFiles := memF; drs := dr; FreeOnTerminate := True; inherited Create(False); end;
procedure scandirs.UpdateList; begin memFiles.Lines.AddStrings(dList); end;
procedure scandirs.Execute; var i : Integer; begin drives := explode(',',drs); dList := TStringList.Create; for i := 0 to High(drives) do begin GetFilesInDirectory(drives[i],'*',dList,True); Synchronize(UpdateList); dList.Clear; end; dList.Free; end;
end. |
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 30.11.05 18:19
Also eigentlich auch nichts neues. Oder was unterscheidet deine Routine von denen hier`im Forum bekannten?
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Mi 30.11.05 18:23
garnichts...^^
vielleicht einfach nur schneller, weil se in nem eigenständigen thread läuft... als ich sie auf dem button direkt liegen hatte brauchte sie komischer weise länger...
wie gesagt, mir kams auf nen schnellen suchalgorythmus beim endgültigen dateien finden an, mit nen paar features, wie zum beispiel das durchsuchen von text dokumenten etc.
/e: um schnelleres durchsuchen der festplatte, wie bei der standart windowssuche haben sich ja schon andere den kopf zerbrochen(du ja glaubig auch mit deinen drivetools) 
|
|
maupity
Hält's aus hier
Beiträge: 2
|
Verfasst: Mi 30.11.05 19:33
Zitat:
-gut wäre eine möglichkeit die suche zu begrenzen (zum beispiel: suchbegriff darf nicht Teil des gefunden Wortes, sein sondern muss allein stehen)
Sucht man zum Beispiel nach "ati", bekommt man auch Treffer wie "configur-ati-on" oder "inform-ati-on". Ist auch sinnvoll (wenn man den ganzen Dateinamen nicht mehr kennt), aber schön wäre auch die Option mit Anführungszeichen o.ä. den Suchbegriff ausschliesslich in der angegebenen Schreibweise (also z.B. das was zwischen den Anführungszeichen steht) suchen und finden zu können.
Zitat:
-Suchbegriffe sollten automatisch abgespeichert werden
so eine art verlauf wie beim browser?
Ja genau das
Zitat:
-denkbar wäre auch eine Speicherfunktion für Playlisten
könnte man überlegen, wollte mich aber eigentlich auf die suche von dateien konzentrieren
Vllt nochmal im Hinterkopf behalten, reichen würde ja auch die Möglichkeit die Suchergebnisse alle markieren zu können und mit drag&drop in Foobar o.ä. und von dort aus die Playliste erstellen. Würde ja fast auf das Gleiche rauskommen, ist vllt ja auch einfacher zu realisieren.? (könnte ich mir als absolut Programmierunfähiger so vorstellen  )
Ansonsten bin ich immer noch begeistert und werde wetierhin ausführlich testen!
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: So 04.12.05 14:27
so, hab ein paar kleinere änderungen schon einmal hinzugefügt 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 04.12.05 15:21
Für meine Laufwerke ist das Teil etwas unpraktikabel: Bei ~400000 Dateien brauch das Teil einfach nur ewig zum Einlesen. Ohne Fortschrittsanzeige ist das unbrauchbar ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Di 06.12.05 15:46
am besten du ermittelst die anzahl aller dateien und machst anhand dessen eine progressbar  gibts glaube ich ne api funktio nfür 
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Di 06.12.05 16:59
bin schon auf der suche nach sonner api funktion, vermute getvolumeinfo... bin aber noch nit dazu gekommen mir das näher anzugucken oder zu posten
In der nächsten version sind schon nen scan timer drin, als man kann z.b. sagen, das der die laufwerke jeden tag um meinetwegen 3 uhr nachts scannen soll und ich hab endlich ne resize funktionalität eingebaut...
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Mi 21.12.05 00:08
so, habe mal ne neue version mit einigen kleineren erneuerungen hochgeladen...
changelog steht oben 
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Sa 31.12.05 17:47
so, jetzt kann man endlich auch mit wildcards suchen (wildcard = *) und die logische such-anfragen kommen hoffentlich mit der nächsten version!!!
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Do 05.01.06 13:32
So, nachdem mir aufgefallen is, das eine suche mit wildcards doch herzlich wenig ergebnisse liefert, habe ich diese mal gefixed
bissel feedback wär noch ganz schön  , wie findet ihr die umsetzung der wünsche und funktionen etc. bis jetzt?
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: Di 10.01.06 21:16
Neu: Die Verarbeitung von logischen Such-Ausdrücken ist nun auch möglich! die Funktionen hierzu habe ich auch hier veröffentlicht: www.delphi-forum.de/...hAnfragen_54140.html
In der nächsten Version soll es auch ein komplett neu überarbeitetest Design geben, da ich dieses ein wenig spartanisch und unübersichtlich finde!
P.S.: Mein 5. Post in Folge, so langsam komm ich mir doof vor...  sagt doch mal was ...
|
|
Pepe 
      
Beiträge: 107
Win 98, Win 2000 Prof., Win XP Prof.
Delphi 2005 Prof.
|
Verfasst: So 05.02.06 15:49
Hoi,
die nächste Version soll netzwerkfähig sein und befindet sich atm im Beta-Stadium, ich bräuchte deswegen noch ein paar Beta-Tester. Würde mich über ein paar Freiwillige freuen! Meldet euch einfach per pn bei mir...
so long,
Pepe
|
|
|