Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi zufällige MP3s abspielen (https://www.delphipraxis.net/8367-zufaellige-mp3s-abspielen.html)

Matze 3. Sep 2003 10:39


zufällige MP3s abspielen
 
Hi!

Ich möchte als Hintergrundmusik für mein Programm zufällige MP3s abspielen, wieso geht folgender Code nicht, und wie mache ich es richtig? :gruebel:

Delphi-Quellcode:
procedure TForm1.playMP3Sound;
var Song: integer;
begin
  Song:=random(3)+1;

  MediaPlayer1.FileName:=(PChar(ExtractFilePath(Application.ExeName)+ 'MP3\Sound'+IntToStr(Song)+'.mp3'));
  MediaPlayer1.Open;
  MediaPlayer1.Play;
  if MediaPlayer1.Position=MediaPlayer1.Length then
  begin
    MediaPlayer1.Stop;
    playMP3Sound;
  end;
end;

Dannyboy 3. Sep 2003 11:03

Re: zufällige MP3s abspielen
 
Was exakt funktioniert denn daran nicht, Matze? Wird gar nichts gespielt
oder wird der Zufall nicht eingahalten?

Mir stechen zunächst mal 3 wesentliche Dinge ins Auge: :chat:

1.)
Zu Deiner Rekursion: Sie ist im Grunde unendlich. Solltest Du sehr viele Tracks laufen haben, stürzt Dir das Ding wegen 'nem Stack-Overflow ab. Hier nimmst Du entweder eine Abbruchbedingung der Rekursion mit rein, oder Du nimmst die Schleife raus und packst sie nach außen.

2.)
Gib dem Mediaplayer doch mal die Information, dass Du explizit MP3-Files spielst, falls Du das nicht mittles Objektinspektor bereits getan hast.

3.)
Überprüfe mal in einem Editfeld, ob
Zitat:

(PChar(ExtractFilePath(Application.ExeName)+ 'MP3\Sound'+IntToStr(Song)+'.mp3'))
tatsächlich exakt Pfad und Name Deiner Mp3 zurück gibt.

Matze 3. Sep 2003 11:05

Re: zufällige MP3s abspielen
 
Ich habe noch etwas vergessen zu sagen:

Delphi-Quellcode:
randomize
habe ich im OnCreate der Form.

Ein zufälliger Titel (von den 4) wird abgespielt, ist dieser zu Ende, dann wird kein weiterer Song abgespielt.
Ich glaube, das liegt daran, dass ich in der procedure, dieselbe wieder aufrufe.

Dannyboy 3. Sep 2003 11:11

Re: zufällige MP3s abspielen
 
Na Du bist ja cool. :o
Wann rufst Du die Prozedur eigentlich auf ??? Wie oft ???

Schreibe den Prüfungsteil des Trackendes mal in einen Timer oder meinetwegen
ins Idle, damit regelmäßig geprüft wird, ob der Track zuende ist!

Dannyboy 3. Sep 2003 11:14

Re: zufällige MP3s abspielen
 
Zitat:

Zitat von Dannyboy
Na Du bist ja cool. :o
Wann rufst Du die Prozedur eigentlich auf ??? Wie oft ???

Schreibe den Prüfungsteil des Trackendes mal in einen Timer oder meinetwegen
ins Idle, damit regelmäßig geprüft wird, ob der Track zuende ist!

By the way:
Zitat:

Ein zufälliger Titel (von den 4) wird abgespielt,
ist nicht ganz korrekt. Du bekommst bloß 3 mögliche Ergebnisse
und zwar 1, 2 oder 3!

Matze 3. Sep 2003 11:14

Re: zufällige MP3s abspielen
 
Ich rufe sie einmal auf im OnActivate, ich probier das mal mit einem Timer...
Danke. :thumb:

Dannyboy 3. Sep 2003 11:28

Re: zufällige MP3s abspielen
 
Habe das einfach mal aus dem Bauch heraus geschrieben, ohne Test !!!
Probier's aus.

Delphi-Quellcode:
procedure TForm1.OnTimer(Sender:TObject); // 1000 millisec ist ok!
begin
  if NextTrack then
  begin
    MediaPlayer.stop;
    playMP3Sound;
  end;  
end;


function TForm1.NextTrack : Boolean;
begin
  With MediaPlayer Do
    result:= Position >= Length
{verwende, den ">=" Operator und versichere Dich, dass das
automatische Zurückspulen beim Ende eines Files auf FALSE steht !!! }
end;


procedure TForm1.playMP3Sound;
var Song: integer;
begin
  Song:=random(3)+1; // 1, 2 oder 3 !!!
  MediaPlayer1.FileName:=(PChar(ExtractFilePath(Application.ExeName)+ 'MP3\Sound'+IntToStr(Song)+'.mp3'));
  MediaPlayer1.Open;
  MediaPlayer1.Play;
end;

Matze 3. Sep 2003 11:38

Re: zufällige MP3s abspielen
 
Danke!

Aber ich habe einfach das hier in den Timer gepackt und es geht! :thumb:

Delphi-Quellcode:
if MediaPlayer1.Position=MediaPlayer1.Length then
  begin
    MediaPlayer1.Stop;
    playMP3Sound;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 Uhr.

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