AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzeige
Thema durchsuchen
Ansicht
Themen-Optionen

FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzeige

Ein Thema von Zacherl · begonnen am 14. Sep 2005 · letzter Beitrag vom 1. Dez 2005
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Zacherl
Zacherl
Registriert seit: 3. Sep 2004
Hallo,
da ja jetzt raus ist, wie man Dateien mit Fortschrittsanzeige sucht, habe ich einfach mal eine Suchanwendung geschrieben. Die Bedienung ist ähnlich wie bei der Windows Suchfunktion. * muss für "alles" eingegeben werden (Kennt man ja)!

So, das wars auch schon.

Florian
Angehängte Dateien
Dateityp: exe findfiles_131.exe (330,5 KB, 117x aufgerufen)
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
 
Benutzerbild von Zacherl
Zacherl

 
Delphi 10.2 Tokyo Starter
 
#21
  Alt 15. Sep 2005, 20:19
Zitat von Luckie:
Zitat von Florian Bernd:
Zitat:
Bevor das Programm angefangen hat zu suchen hat es erstmal 40 Sekunden irgendetwas initialisiert.
Klar! Es wird gesucht, wie viele Dateien überhaupt da sind, um die Fortschrittanzeige zu ermöglichen.
Dateien? In meiner Klasse zähle ich nur die Ordner. Deswegen geht es ja auch mal schneller bzw. langsamer, je nach dem wie viele Dateien in den Ordnern sind.
Ups. Dann hab ich wohl nicht richtig geguckt.

Zitat von Luckie:
Zitat:
Zitat:
Wie ermittelst du die Dateigröße bzw, das zugehörige Icon?
Über einen TFileStream! Daher können solche Fehlermeldungen bei Exclusiv geöffneten Dateien kommen.
Warum ninnmst du nicht FindFirstFile/FindNextFile und die WIN32_FIND_DATA Struktur, wenn du sie schon mit diesen Funktionen suchst?
Stimmt. Könnte ich machen.

Zitat von Luckie:
Zitat:
Zitat:
Desweiteren scheint deine Suche das letzet Zugriffdatum zu ändern, was der Explorer beim Suchen nicht macht.
Muss am FileStream liegen. Obwohl es fmOpenRead ist
Eben drum, sollst du das ja nicht machen.
Ok. Nimmt bestimmt auch Performance weg.

Zitat von Luckie:
Zitat:
Zitat:
Leinwand/Bild erlaubt kein Zeichnen.
Ist wohl ein Fehler im ListView bei Verwendung von vielen Icons.
Nein liegt wohl eher an der nicht threadsicheren VCL.
Ist also unter Benutzung der VCL nicht zu umgehen.

Ich werde dann demnächst mal den Source veröffentlichen. Als eine Art erweiterte Demo zu deiner Klasse.

Florian
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#22
  Alt 16. Sep 2005, 05:57
Zitat:
Zitat:
Zitat:
Zitat:
Leinwand/Bild erlaubt kein Zeichnen.
Ist wohl ein Fehler im ListView bei Verwendung von vielen Icons.
Nein liegt wohl eher an der nicht threadsicheren VCL.
Ist also unter Benutzung der VCL nicht zu umgehen.
Eher nicht threadsicher programmiert. Zugriffe auf VCL Komponenten sind vom Thread aus nur in Synchronize() gestattet.
Marco Warm
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

 
Turbo Delphi für Win32
 
#23
  Alt 17. Sep 2005, 00:54
Und ich dachte schon, es gäbe nun doch eine Möglichkeit die Maximalzahl der Dateien/Ordner rauszufinden ohne sie erst einmal zu zählen...
Günter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#24
  Alt 17. Sep 2005, 11:27
Zitat von GuenterS:
Und ich dachte schon, es gäbe nun doch eine Möglichkeit die Maximalzahl der Dateien/Ordner rauszufinden ohne sie erst einmal zu zählen...
Na ja, dann müßte das Windows schon für uns zählen und die Daten irgendwo abspeichern.
Aber es würde en Rechner doch immerhin etwas abbremsen, wenn ständig die Dateianzahlen aktualsiert werden müßten, denn schließlich wüßte das dann immer für das Verzeichnis, wo eine Datei erstellt/gelöscht wird und dessen übergeordneten Verzeichnisse durchgeführt werden ... und das ständig ...
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

 
Turbo Delphi für Win32
 
#25
  Alt 17. Sep 2005, 11:39
Zitat von himitsu:
Zitat von GuenterS:
Und ich dachte schon, es gäbe nun doch eine Möglichkeit die Maximalzahl der Dateien/Ordner rauszufinden ohne sie erst einmal zu zählen...
Na ja, dann müßte das Windows schon für uns zählen und die Daten irgendwo abspeichern.
Aber es würde en Rechner doch immerhin etwas abbremsen, wenn ständig die Dateianzahlen aktualsiert werden müßten, denn schließlich wüßte das dann immer für das Verzeichnis, wo eine Datei erstellt/gelöscht wird und dessen übergeordneten Verzeichnisse durchgeführt werden ... und das ständig ...
Es würde reichen, wenn jedes Verzeichnis wüßte wieviele Einträge es besitzt (ohne den Inhalten der Unterordner). Genau wie bei einer Liste. Soviel langsamer würde das auch nicht werden.

Es müßte nicht einmal ständig sondern gerade mal dann durchgeführt werden, wenn eine Datei angelegt bzw. gelöscht wird. Beim Kopieren mehrerer Dateien eines Ordners könnte sich Windows auch damit helfen, dass es nicht für alle einzeln, sondern für alle einmal aktualisiert.

Dadurch würde es auch Sinn machen, wenn der "Temp" Ordner gekennzeichnet ist, dass hier keine Zählung durchgeführt wird.
Günter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#26
  Alt 17. Sep 2005, 11:45
Zitat von GuenterS:
Es würde reichen, wenn jedes Verzeichnis wüßte wieviele Einträge es besitzt (ohne den Inhalten der Unterordner). Genau wie bei einer Liste. Soviel langsamer würde das auch nicht werden.
Dat wissen die Verzeichnisse halt nicht, denn im Grunde genommen bestehen diese ja nur aus einer aneinanderreihung von Datensätzen, welche von einen "Ende"-Datensatz abgeschlossen werden, also um ein Einlesen kommt man so, oder so nicht herum.

Und wenn dann würde ja eh nur die Anzahl aller Dateien drinstehen ... wenn also mit 'ner Suchmaske gearbeitet wird, wie es bestimmt meistens der Falls ist, dann würde diese Zahl mit großer Sicherheit nicht stimmen.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

 
Turbo Delphi für Win32
 
#27
  Alt 17. Sep 2005, 11:49
Zitat von himitsu:
Zitat von GuenterS:
Es würde reichen, wenn jedes Verzeichnis wüßte wieviele Einträge es besitzt (ohne den Inhalten der Unterordner). Genau wie bei einer Liste. Soviel langsamer würde das auch nicht werden.
Dat wissen die Verzeichnisse halt nicht, denn im Grunde genommen bestehen diese ja nur aus einer aneinanderreihung von Datensätzen, welche von einen "Ende"-Datensatz abgeschlossen werden, also um ein Einlesen kommt man so, oder so nicht herum.

Und wenn dann würde ja eh nur die Anzahl aller Dateien drinstehen ... wenn also mit 'ner Suchmaske gearbeitet wird, wie es bestimmt meistens der Falls ist, dann würde diese Zahl mit großer Sicherheit nicht stimmen.
Was ich beschrieben habe war nicht der Zustand wie es gerade ist, sondern einer den ich gerne hätte...

Ansonsten war es klar, dass man einmal zählen muss, is ja nix wirklich neues.
Günter
  Mit Zitat antworten Zitat
Gothicware
 
#28
  Alt 17. Sep 2005, 22:04
Also ich würde beim vor dem Durchsuchen denn belegten Speicher der Festplatteermitteln,
und dann die Summe der Grösse der gefundenen Dateien gegenrechnen. So kann man einen "InEtwa"
Progressbar realiesieren, und muss nicht alles Doppelt machen.

Dateien nach Inhalt durchsuchen ist schon etwas Hardcore. Da man die verschiedenen Datei Formate beachten muss. (zb.: Unicode). Ich glaub da beisst man sich schon die Zähne aus, wenn man versucht einem D:kt@t0r ähm Giganten der Software Industrie das Wasser zureichen.

In meine GW_FileFinder Unit kann man auch sehr schön sehen, wie man viele Infos wie Grösse, Datum, Icon auf einfache Weise bekommt. Wozu gibts WinAPI?
http://www.delphi-forum.de/topic_GWF...it+_47877.html
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#29
  Alt 19. Sep 2005, 11:38
An das ermitteln der Dateigröße hab ich auch schon gedacht (statt nur die Dateien zu zählen).
Allerdings kann man dabei gleich mal auf den netten Integer(LongInt) verzichten und muß dafür dann den größeren/langsammeren Int64 umsteigen, was wiederum einige winzige Nachteile bringt.

Na ja, im Endefekt hab ich mich (SearchSameFiles) dann dafür entschieden die Dateien und Verzeichnisse zu zählen, wobei die Dateien ein wenig anders gewichtet werden.
Außerdem kann es bei mir eh vorkommen, daß Dateien mehrfach eingelesen werden, was dann auch noch an dem Fortschrittsbalken einiges verändern würde.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#30
  Alt 1. Dez 2005, 04:20
Hallo,

Könntest du noch das Dateidatum in der Listview anzeigen lassen?
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz