Einzelnen Beitrag anzeigen

bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: suche Funktion FindLastDir

  Alt 16. Nov 2007, 12:58
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;
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat