![]() |
repeat schleife unterbrechen
hallo, wer kann mir helfen ? Ich möchte die Search-Schleife unterbrechen können,wenn die Suche mal zu lange dauert (lol ganze Festplatte ausgewählt etc.) ...
habe versucht das über ein Flag zu lösen, aber bei mir scheitert es an der richtigen Stelle. Die Procedure ist eh etwas zu langsam, da er ja 2x durch die gleichen Ordner geht...und noch nicht mal verschiedene Dateimasken gleichzeitig kann.
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 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 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 ;//or Flag_File_search_stop; finally FindClose(SR); mediaarchiv_frm.search_files_end_timer.Enabled := true; mediaarchiv_frm.search_files_end_timer.Interval := 1500; end; end; |
Re: repeat schleife unterbrechen
schmeis deine abfrage nach dem flag doch einfach in die beiden repeat until schleifen...
|
Re: repeat schleife unterbrechen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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