![]() |
Re: suche Funktion FindLastDir
Zitat:
Fürs abspielen der Tracks brauche ich immer den ersten Ordner im Verzeichnis in der Tiefe. Den abgespielt, wird der nächste herangezogen, keiner mehr da, dann eine Ebene höher den nachfolgenden Ordner suchen, in die Tiefe gehen.... Die Funktion sollte nur einen Teil des Ganzen sein...damit kann man nicht alle Vorgänge abfangen, wollte das in TeilFunktionen machen und dann zusammensetzen.... |
Re: suche Funktion FindLastDir
Soo hier mal die komplette Procedure um den nächsten Track zu finden und abzuspielen:
Vielleicht gibt es ja noch Verbesserungsvorschläge in Bezug auf ein Limit nach oben setzen bzw Abbrechen, wenn er zulange sucht...
Delphi-Quellcode:
procedure PlayAbsoluteNext;
var I:integer; bPath:string; label setIndex,proofFolder,proofFiles,noFiles,areFiles; begin ListFlag := True; //PlayIcons ausblenden bPath := ExcludeTrailingPathDelimiter(PlayPath);//PlayPath merken GetAudioplayerDirectory(PlayPath); //Drives abfragen if (bPath = MediaPath)or(DriveLst.Count >0) then //oberste Rootgrenze erreicht begin Path := MediaPath; I := 0; search:=true; DriveLst.Clear; DirLst.Clear; FileLst.Clear; FindAllFiles(DirLst,FileLst,Path,FileMask,false,true,true); (DirLst as TStringList).Sort; //alphab. sortieren (FileLst as TStringList).Sort; goto proofFolder; //Path eine Ebene höher als PlayPath,Rootgrenze nicht end else Path := GetAudioplayerDirectory(PlayPath); //...erreicht setIndex: //...Durchlaufpruefungen ! search:=true; DriveLst.Clear; DirLst.Clear; FileLst.Clear; FindAllFiles(DirLst,FileLst,Path,FileMask,false,true,true); (DirLst as TStringList).Sort; //alphab. sortieren (FileLst as TStringList).Sort; if DirLst.Count >0 then begin for I := 0 to DirLst.Count-1 do //Ordner zählen und Play-Ordnernamen if bPath = DirLst.Strings[I] then //mit Liste vergleichen bzw suchen break; //wenn gefunden Inc(I); //Index-Nr ab Playordner um 1 erhöhen end; proofFolder: //...auf Ordner pruefen if (I < DirLst.Count) then begin if DirectoryExists(DirLst.Strings[I]) then Path := FindLastDir(DirLst.Strings[I]);//neuen Path setzen auf tiefsten Ordner DriveLst.Clear; DirLst.Clear; FileLst.Clear; search:=true; FindAllFiles(DirLst,FileLst,Path,FileMask,false,true,true);//Inhalte holen (DirLst as TStringList).Sort; //alphab. sortieren (FileLst as TStringList).Sort; end; goto proofFiles; proofFiles: //..auf Files pruefen if FileLst.Count = 0 then goto noFiles else if FileLst.Count > 0 then goto areFiles; areFiles: //..Files vorhanden if FileExists(FileLst.Strings[0]) then begin ShowMediaFiles(listmedia,false,true); Play(Path,0); end; exit; noFiles: //..keine Files vorhanden bPath := ExcludeTrailingPathDelimiter(Path); if bPath = MediaPath then Path := MediaPath //oberste Rootgrenze erreicht else Path := GetAudioplayerDirectory(Path); //Path eine Ebene höher als PlayPath goto setIndex; //..dann erneuter Durchlauf end; |
Re: suche Funktion FindLastDir
Oh mann, das muss einem grenzdebilen Frührenter wie mir doch gesagt werden, was überhaupt gewollt ist... :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 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