Hallo, kennt einer eine schnellere und komfortablere Procedure zum Auslesen von Ordnerstrukturen ?
Diese hier geht 2x durch die gleichen Strukturen und kann auch nur eine DateiMask.
Delphi-Quellcode:
procedure Tmediaarchiv_frm.FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var SR: TSearchRec;
begin
RootFolder := IncludeTrailingPathDelimiter(RootFolder);
if Recurse then
if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
try
repeat
if not Flag_File_search_stop then
if SR.Attr and faDirectory = faDirectory then
// --> ein Verzeichnis wurde gefunden
// der Verzeichnisname steht in SR.Name
// der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
// RootFolder + SR.Name
if (SR.Name <> '.') and (SR.Name <> '..') then
FindAllFiles(RootFolder + SR.Name, Mask, Recurse);
application.ProcessMessages;
mediaplayer_frm.search_scroll_txt.Enabled := true; //Aktivierung
mediaplayer_frm.search_scroll_txt.visible := true;
mediaplayer_frm.stop_search_btn.Visible := true;
until FindNext(SR) <> 0;
finally
FindClose(SR);
mediaarchiv_frm.search_files_end_timer.Enabled := true;
mediaarchiv_frm.search_files_end_timer.Interval := 1500;
end;
if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
try
repeat
if not Flag_File_search_stop then
if SR.Attr and faDirectory <> faDirectory then
begin
// --> eine Datei wurde gefunden
// der Dateiname steht in SR.Name
// der vollständige Dateiname (inkl. Pfadangabe) ist
// RootFolder + SR.Name
// folgende Zeile schreibt den vollständigen Namen in eine Listbox
PlayList.Add(RootFolder + SR.Name);
mediaplayer_frm.PlayList_ListBox.Items.add(SR.Name);
mediaarchiv_frm.search_files_end_timer.Enabled:= false;//Verzögerung
mediaplayer_frm.search_scroll_txt.Enabled := true; //Aktivierung
mediaplayer_frm.search_scroll_txt.visible := true;
mediaplayer_frm.stop_search_btn.Visible := true;
end;
until FindNext(SR) <> 0 ;
finally
FindClose(SR);
mediaarchiv_frm.search_files_end_timer.Enabled := true;
mediaarchiv_frm.search_files_end_timer.Interval := 1500;
end;
end;