![]() |
Re: schnellere Procedure gesucht
Zitat:
"Ein Verzeichnis ist eine Liste von Dateien oder Verzeichnissen" |
Re: schnellere Procedure gesucht
Hallo,
Zitat:
Gruß xaromz |
Re: schnellere Procedure gesucht
Sag ich doch. :mrgreen:
|
Re: schnellere Procedure gesucht
Delphi-Quellcode:
Das ist natürlich Schwachsinn und falsch. Alzaimar hat natürlich recht das das Backslash weg muss.
DoSearch(ExtractFilePath(Path) + '\');
Gruß Hagen |
Re: schnellere Procedure gesucht
Zitat:
Meine PlayList_Listbox soll daher parallel nur die Dateinamen erhalten. Nur wo und wie greife ich die hier am besten ab, ohne wieder alles zu verlangsamen ? und wieso durchsucht der erst den gewünschten Ordner inkl Ordnerstruktur darunter und danach auch die Struktur darüber ??? |
Re: schnellere Procedure gesucht
Zitat:
Meine PlayList_Listbox soll daher parallel nur die Dateinamen erhalten. Nur wo und wie greife ich die hier am besten ab, ohne wieder alles zu verlangsamen ? und wieso durchsucht der die Ordnerstruktur die ich auswähle (incl. Unterordner) und dann noch diejenige, die darüber liegt (eine Ebene höher) ??? Aufruf: (ist i.O. da mit alter Procedure schon gelaufen, habe unten Textdateien ausgelagert zum prüfen.
Delphi-Quellcode:
procedure Tmediaarchiv_frm.Dir_to_PlayList;
var Ext: TStringList; dir: string; begin ext := TStringList.Create; dir := mediaplayer_frm.spSkinSelectDirectoryDialog1.Directory; //ext.Sorted := false; Flag_File_search_stop := false; begin try if config_frm.File_Mask_check_mp3.Checked = true then ext.Add('.' + config_frm.File_Mask_check_mp3.Caption); if config_frm.File_Mask_check_wav.Checked = true then ext.Add('.' + config_frm.File_Mask_check_wav.Caption); AllFilesWithExtension(dir,Playlist,ext); finally ext.SaveToFile('d:\ext.txt'); playlist.SaveToFile('d:\playlist.txt'); ext.Free; end; end; Etwas angepasst, fehlten ein paar end; Mir scheint als liegt der Fehler unten beim ListUpdate, bin aber noch nicht fit genug um das zu korregieren. Es sieht so aus, als würde der Path innerhalb der Schleife umgeschrieben.... kann das ?
Delphi-Quellcode:
procedure Tmediaarchiv_frm.AllFilesWithExtension(const Path: String; List, Extension: TStrings);
var Tick: Cardinal; procedure DoSearch(const Path: String); var SR: TSearchRec; begin if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then try repeat if GetTickCount >= Tick then begin Tick := GetTickCount + 100; Application.ProcessMessages; end; if (SR.Attr and faDirectory <> 0) and (SR.Name <> '.') and (SR.Name <> '..') then DoSearch(Path + SR.Name + '\') else if Extension.IndexOf(ExtractFileExt(SR.Name)) >= 0 then List.Add(Path + SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; begin List.BeginUpdate; try Tick := GetTickCount + 100; DoSearch(ExtractFilePath(Path)); mediaplayer_frm.PlayList_ListBox.Items.Addstrings(Playlist); finally List.EndUpdate; end; end; Grüße bluescreen25 |
Re: schnellere Procedure gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo bluescreen25,
ich hoffe ich habe deinen Hilferuf richtig verstanden. Hier eine Demo, die meine beiden Codes verbindet. Die Dateien werden in einer virtuellen ListBox ohne Pfadinfo angezeigt, aber mit Pfad gespeichert. Die Reaktion auf Anwendungsereignisse habe ich aus der Schleife heraus genommen und der Pfad wird als Konstante schon mit trailing path delimiter übergeben. Mit dem fine tuning deiner Anwendung würde ich warten, bis sie fertig ist - und ich denke du hast da noch einiges zu erledigen. Eine wirkliche Beschleunigung erfährt ein media harvester nur durch eine informierte Auswahl der zu durchsuchenden Verzeichnisse. Alles zu durchsuchen ist ein brute force Ansatz, der eigentlich nicht nötig ist. In der Demo habe ich eine FolderBox eingebaut, die per Kontextmenü mit Verzeichnissen befüllt werden muss. Erst dann kann gesucht werden. Es sind noch ein paar Details versteckt, aber die Zeit zum Ausarbeiten fehlt mir momentan. Vielleicht hilft es dir ja trotzdem ein Stück auf deinem eigenen Weg. Grüße vom marabu |
Re: schnellere Procedure gesucht
Zitat:
Jetzt ist auf einmal die Diskussion hier entbrannt, um die schnellste procedure zu integrieren. Da ich eh gerade dabei war zu probieren, ist mir aufgefallen, das die procedure von negaH nochmals spürbar schneller war, obwohl zur Zeit der Code irgendwie nicht ganz korrekt arbeitet. Ich übergebe da einen Path und er durchsucht diesen inkl. Unterordner rasend schnell aber dann durchsucht er auch eine Path-Stuktur darüber. Da finde ich im Code von negaH leider den Fehler nicht. Deine procedure läuft soweit perfekt :thumb: . Nochmals vielen Dank für deine Mühe und Geduld.... |
Re: schnellere Procedure gesucht
Zitat:
Delphi-Quellcode:
Gute Nacht.
// DoSearch(ExtractFilePath(Path));
DoSearch(IncludeTrailingPathDelimiter(Path)); marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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