![]() |
ungeordnet, in Reihenfolge Dateien suchen und anzeigen
Hallo Community,
Ich möchte gern z.B. mithilfe der Funktion FindAllFiles aus DP Dateien anzeigenlassen, die aber nicht geordnet werden sollen. Mir ist es wichtig, dass sie in der Reihenfolge wie im Explorer dargestellt werden. Ich habe keine Ahnung, wie ich das machen soll. Plz Help Me^^ |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
du willst dateien aus der dp anzeigen lassen? Hast du die dateien bereits heruntergeladen oder willst du direkt aus dem internet die anzeigen lassen?
|
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
Zitat:
ich denke er meint die Funktion FinAllFiles aus der ![]() Werden die dort denn in irgendeiner Art sortiert? :gruebel: |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
ups, da hab ich wohl durch das fehlende komma das ganze falsch interpretiert. ich dachte er will mit hilfe der funktion findallfiles alle dateien aus der dp anzeigen, wenn man das allerdings anders liest meint er wohl die funktion findallfiles aus der dp-codelib...
die Funktion sortiert die dateien nur indirekt. Die Sortierung übernimmt bereits das Betriebssystem. Unter win98/win95 würde diese funktion die dateien unsortiert zurück liefern, unter xp sind die dateien aus irgend einem grund schon sortiert (wohl durchs betriebssystem). Anmerken möchte ich jedoch noch das die funktion nicht die perfomanteste ist da pro verzeichnis 2 mal findFirst->FindNext aufgerufen wird anstelle den aufruf nur einmal abzusetzen und dann selbst den Filter anzuwenden. |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
Ich bin offen für Neues^^ Haste denn ne bessere Funktion parat?
(Beim nächsten Mal setz' ich wieder Kommas, sry^^) Ja, wie kann man denn nun eine unsortierte Fassung des Ganzes bekommen? |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
eine unsortierte gibt es so nicht, einzige möglichkeit wäre dann das du das Ergebnis wieder mischst (shuffle). Was stört dich daran das die ergebnisse sortiert sind?
Bessere Lösung: Anstelle 2 mal findFirst->FindNext aufzurufen reicht einmal, und dann das Ergebnis mit "like" auf die Maske prüfen (da gibts ne unit in der Delphifundgrube) ![]() Bevor jetzt die Frage kommt warum man sich selbst die Arbeit des Filterns machen soll anstelle einfach per FindFirst den Filter zu setzen mit einer zweiten Abfrage: Festplattenzugriffe sind so ziemlich das langsamste was es bei den heitigen rechnern gibt. |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
Ich möchte keine weitere uses haben...Da ist doch dann nur wieder sehr viel Müll drin, wovon ich nur eine Sachen wirklich brauche...oder nicht?
Ich möchte die Ordner- und Dateistruktur von meinem Desktop nachm Formatieren beibehalten und amche deswegen vor einer Neuinstallation von Windows ein Backup mit meinem eigenen Tool. |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
in dieser unit ist nix weiter drin als der algorythmus (funktion). In der Delphifundgrube wird es so bezeichnet:
Zitat:
Wenn unter XP eine Abfrage durchgeführt wurde (also ein directorylisting) wird dieses auch gecacht, jedoch weiß ich nicht ob das caching auch wirkt wenn man mit einer anderen maske erneut ein listing durchführt. Unter Win98 ist es auf jeden fall so das kein caching durchgeführt wird und somit dauert das auflisten auch mindestens doppelt so lang wenn man 2 mal den gleichen ordner abfragt. |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
Jo, habe mir den Link auch gerade angeschaut (war der schon immer da oder haste den noch bearbeitet?^^).
Wenn es allerdings keine wirkliche Möglichkeit gibt, Dateien in der strukturellen Reihenfolge anzeigenzulassen, dann schließe ich den Thread jetzt. Trotzdem danke für den Hinweis auf das Performance-lag, SirThornberry. |
Re: ungeordnet, in Reihenfolge Dateien suchen und anzeigen
den Link hab ich im Nachhinein erst eingefügt weil er nicht so leicht zu finden ist. Hab die Funktion mal versucht etwas zu optimieren (findallFiles).
Dabei hab ich eine InlineProcedure verwendet damit nicht bei jedem rekursiven Aufruf "IncludeTrailingPathDelimiter" erneut aufgerufen wird. Desweiteren hab ich einen weiteren Parameter hinzugefügt mit dem man auch angeben kann ob die Verzeichnisnamen mit aufgelistet werden (macht ja manchmal sinn wenn man den Ordnerinhalt sehen will, wie im TotalCommander etc.) In diesem Zusammenhang wird im Property Object auch mit gespeichert ob das Item ein Ordner ist oder nicht. Somit kann man später bei der Darstellung des Inhaltes Ordner und Dateien verschieden kennzeischnen.
Delphi-Quellcode:
procedure FindAllFiles(FileList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False);
procedure LFindAllFiles(AParentFolder: String); var LSearchRec: TSearchRec; begin if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then begin repeat if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then begin if LSearchRec.Attr and faDirectory = faDirectory then begin if AddFolderNames and Like(Mask, AnsiLowerCase(LSearchRec.Name)) then FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(True)); if Recurse then FindAllFiles(FileList, AParentFolder + LSearchRec.Name + '\'); end else if Like(Mask, AnsiLowerCase(LSearchRec.Name)) then FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(False)); end; until FindNext(LSearchRec) <> 0; FindClose(LSearchRec); end; end; begin Mask := AnsiLowerCase(Mask); LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz