Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Media Player (https://www.delphipraxis.net/147459-media-player.html)

jonsen2.0.0.9 9. Feb 2010 10:20


Media Player
 
Hi,


ich möchte nen Programm schreiben, dass Mp3 dateien findet und abspielt.

bis jetzt taucht da aber immer ein Fehler auf:

Delphi-Quellcode:
var
  Form3: TForm3;
  sl2: TStringList;

implementation

uses Unit1;

{$R *.dfm}


Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings; removePath:Boolean); //eine rekursive suche die funktionieren müsste
Var
  FindRec: tSearchRec;
Begin

  If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then
    Exit;

  If aPath[Length (aPath)] <> '\' Then
    aPath := aPath + '\';


  If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
    begin
     if removePath then
      aResult.Add(ExtractFileName(aPath + FindRec.Name))
     else
      aResult.Add(FindRec.Name);
    end;
    Until FindNext (FindRec) <> 0;

  FindClose (FindRec);


  If Not aWithSub Then
    Exit;


  If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then
    Repeat
      If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then

        If Boolean (FindRec.Attr and faDirectory) Then

          FindFiles (aPath + FindRec.Name, aFindMask, aWithSub, aResult, false);
    Until FindNext (FindRec) <> 0;

   FindClose (FindRec);
End;

procedure TForm3.Button1Click(Sender: TObject);
begin
 if SelectDirectory('Verzeichnis wählen', '*:\', sDir) then
  begin
   if DirectoryExists(sDir) then
    begin

     FindFiles(sDir, '*.mp3', True, CheckListBox1.Items, true); //hier soll er dann die Mp3´s (nur den namen) auflisten
     FindFiles(sDir, '*.mp3', true, sl2, false);                // und einmal den kompletten pfad+name+.mp3 in sl2 speichern.


    end;
  end;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin

 sl2 := TStringList.Create;

end;

procedure TForm3.FormDestroy(Sender: TObject);
begin

 sl2.Free;
end;

procedure TForm3.Button2Click(Sender: TObject);
Var i:integer;
begin
i:=0;
repeat
 if checklistbox1.Checked[i] then
  begin
  MediaPLayer1.FileName:=sl2.Strings[i];       //hier möchte ich dann sl2 als pfad+name+.mp3 für die datei angeben
  MediaPlayer1.Open;
  MediaPlayer1.Play;                          //und die musik starten.
  end;
 i:=i+1;
until i=checklistbox1.Count-1
end;
Mein Problem:

Es kommt immer die Fehlermeldung:

Die Datei wurde nicht gefunden. Bitte stellen sie sicher, dass der Pfad und der Dateiname richtig sind.


Vier Fragen:

1. Wie kann ich dieses Problem lösen?
2. Wieso tritt dieses auf, also wo ist mein Denkfehler.
3. Gibt es sonst noch etwas, an meinem Programm, das ich ändern sollte, weil es anders besser schneller einfacher ect. funktioniert?
und
4. Nach dem beheben des Fehlers, müsste doch so alles funktionieren oder?

Naja, viele Fragen.

Danke schonmal.

MFG
Jonsen

DeddyH 9. Feb 2010 10:27

Re: Media Player
 
Lass Dir doch vor dem Abspielen einmal den Dateinamen ausgeben und poste dann hier, was dabei herauskommt. Danach können wir weitersehen, zumindest ich bin gerade zu faul, auf Gut Glück nach dem Fehler zu suchen.

Luckie 9. Feb 2010 10:29

Re: Media Player
 
Wenn in sl2 nur der Pfad steht...

jonsen2.0.0.9 9. Feb 2010 10:35

Re: Media Player
 
sorry hab beim kommentieren ein paar fehler gemacht:

in sl2 soll name, pfad und endung (.mp3) stehen.

wenn ich mir anschaue was in sl2 steht da nur der name drin...wieso?

Delphi-Quellcode:
FindFiles(sDir, '*.mp3', true, sl2, false);
das false heisst doch, das der pfad nicht weggelassen werden soll....hilfe

Luckie 9. Feb 2010 10:38

Re: Media Player
 
aWithSub bedeutet wohl, ob Unterverzeichnisse mit durchsucht werden sollen oder nicht. oder wie meist du hätte diese zeile mit dem Dateipfad zu tun:
Delphi-Quellcode:
If Not aWithSub Then

jonsen2.0.0.9 9. Feb 2010 10:39

Re: Media Player
 
ok ich glaub ich hab meinen fehler gerade gefunden

Delphi-Quellcode:
     if removePath then
      aResult.Add(ExtractFileName(aPath + FindRec.Name))
     else
      aResult.Add(FindRec.Name); //<--- hier wird nur der name aufgelistet
    end;
aber wie schreibe ich auch den pfad mit rein?

(wenn das der fehler ist)

DeddyH 9. Feb 2010 10:40

Re: Media Player
 
Ändere mal diese Stelle
Zitat:

Delphi-Quellcode:
if removePath then
      aResult.Add(ExtractFileName(aPath + FindRec.Name))
     else
      aResult.Add(FindRec.Name);

um in
Delphi-Quellcode:
if removePath then
        aResult.Add(FindRec.Name)    
     else
       aResult.Add(aPath + FindRec.Name);

jonsen2.0.0.9 9. Feb 2010 10:42

Re: Media Player
 
die suche funktioniert ja, nur was die mir in sl2 schreibt ist nicht das was ich gern hätte.

was das genau heisst....sorry weiss ich nicht genau...diese suche kommt aus einem der themen in diesem forum

DeddyH 9. Feb 2010 10:44

Re: Media Player
 
Hast Du den Code denn nun geändert? Nach meinem Dafürhalten müsste es dann nämlich funktionieren (obwohl der verwendete Code jetzt nicht ganz optimal ist).

Luckie 9. Feb 2010 10:45

Re: Media Player
 
DeddyH hat dir doch schon die Lösung gepostet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz