Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzeige (https://www.delphipraxis.net/53350-findfiles-v1-0-eine-suchfunktion-mit-fortschrittsanzeige.html)

Zacherl 15. Sep 2005 20:19

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
Zitat:

Zitat von Luckie
Zitat:

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:

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:

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 :gruebel:
Eben drum, sollst du das ja nicht machen.

Ok. Nimmt bestimmt auch Performance weg.

Zitat:

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

MarcoWarm 16. Sep 2005 05:57

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
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.

GuenterS 17. Sep 2005 00:54

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
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...

himitsu 17. Sep 2005 11:27

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
Zitat:

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 ...

GuenterS 17. Sep 2005 11:39

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
Zitat:

Zitat von himitsu
Zitat:

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.

himitsu 17. Sep 2005 11:45

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
Zitat:

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.

GuenterS 17. Sep 2005 11:49

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
Zitat:

Zitat von himitsu
Zitat:

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.

Gothicware 17. Sep 2005 22:04

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
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

himitsu 19. Sep 2005 11:38

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
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.

toms 1. Dez 2005 04:20

Re: FindFiles v1.0 - Eine Suchfunktion mit Fortschrittsanzei
 
Hallo,

Könntest du noch das Dateidatum in der Listview anzeigen lassen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.
Seite 3 von 4     123 4      

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